【发布时间】:2016-08-31 03:04:36
【问题描述】:
我在下面这段代码中一直面临着二阶SQL注入
if(subjectId!=null){Query query= sessionFactory
.getCurrentSession()
.createSQLQuery(HubQueryConstants.GET_QUERY)
.setParameter(MyConstants.SUBJECT_ID, subjectId)
.setFirstResult(offset)
.setMaxResults(limit)
.setResultTransformer(
Transformers.aliasToBean(MyClass.class));}
我的常量文件是:
常量文件是最终类
GET_QUERY="Select * from MyClass where id=:id ";
虽然默认情况下它处于静态查询中,但我的安全报告仍将其作为二阶 SQL 注入
我们应该在接口中声明常量吗?避免安全问题?
【问题讨论】:
-
我会说你的安全报告是错误的。
-
我认为您可以在查询的 id 参数中注入 sql。但是当您使用休眠时(我猜)您的查询被转换为preparedStement。所以你应该得救了。
-
我在上面的 sn-p 中使用 Sql 查询,虽然我使用的是 HQL 查询,但我的报告显示了二阶 SQL 注入
标签: java spring security constants sql-injection