提问人:Jitendra Tiwari 提问时间:1/30/2023 最后编辑:baruchiroJitendra Tiwari 更新时间:1/30/2023 访问量:274
在 Spring Hibernate 中获取二阶 SQL 注入
Getting Second Order SQL Injection in Spring Hibernate
问:
在扫描 Checkmarx 工具后,我在 Spring-Hibernate 应用程序中面临二阶 SQL 注入,我在 StackOverflow 和其他平台中也经历了多个问题,但没有得到正确的发现。
你能看看下面的代码片段吗,
public String getOrderId(order_name){
String returnId= null;
Query query = entityManager.createNativeQuery("select order_id from order where order_name=?");
List<String> dataset = query.setParameter(1,order_name).getResultList();
if(dataset!=null){
returnId = dataset. Get(0);
}
return returnId;
}
在上面的方法中,在调用时,得到一个高漏洞问题,该方法返回的数据流通过代码而没有经过适当的审查或验证,并最终用于该方法中的进一步数据库查询。getResultList()
早期的代码是这样的,
public String getOrderId(order_name){
String returnId= null;
String q = "select order_id from order where order_name="+order_name;
Query query = entityManager.createNativeQuery(q);
并直接将其用作查询中的字符串附加,我已使用set参数对其进行了修改,
Query query = entityManager.createNativeQuery("select order_id from order where order_name=?");
List<String> dataset = query.setParameter(1,order_name).getResultList();
但是在从中获取数据后,它仍然要求在进一步的数据库查询方法中使用之前对数据进行清理和验证。query.getResultSet()
并且此返回数据正在进一步查询中使用,例如 .(在where子句中正确使用设置参数以避免SQL注入)。select * from return_Data where clause
在上面的查询中,用于另一种方法,我们将 return_Data 作为输入传递给它。
您能否在这里提供帮助,以了解可以添加哪些检查和验证来克服此类问题。提前感谢您的及时回复。
答: 暂无答案
评论