NutzCN Logo
精华 NUTZ如何防止SQL注入等问题
发布于 1069天前 作者 qq_e4acb87f 1992 次浏览 复制 上一个帖子 下一个帖子
标签: dao

请教各位师兄,nutz如何防止SQL注入的,由于nutz在多表查询的时候复杂的SQL会在action中直接硬编码SQL语句,我感觉可能会出现SQL注入的问题,麻烦谁懂的可以给我解释下!谢谢!

8 回复

别直接拼入参数, 用@

Sql sql = Sqls.create("........ id > @id");
sql.param().set("id", xxxxId);

Sqls.create("").setParam("a", "").setParam("b", "").....
也可以一行写到底

发现之前的项目好多地方直接使用了Cnd.wrap(sql),这种问题该如何解决。
PS:客户安全监测发现存在隐患,如果一个个改过来周期太长。

@xwqiang

方案A: 使用Sqls.escapeFieldValue对拼入SQL的外来参数(例如表单参数)进行转义
方案B: Druid的sql 防火墙, 不过要配置好也很耗功夫.

我用方案B解决了这个问题,感谢!
参考地址 :https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE-wallfilter

@wendal 那如果用的是Cnd.where来查询,是不是就已经具备了防止SQL注入的能力?之前看你在别的帖子上说nutz基本上用的都是prepareStatement,并且Cnd走的就是?号。例如按规范写的这句,是否还需要要另外做防止SQL注入的过滤?dao.fetch(UserEntity.class,Cnd.where("username","=",username))

不需要额外做防御

添加回复
请先登陆
回到顶部