gpt4 book ai didi

java - 如何使用预准备语句修复 SQL 注入(inject)?

转载 作者:行者123 更新时间:2023-12-02 10:02:42 25 4
gpt4 key购买 nike

我有一个类被 Veracode 扫描标记为 SQL 注入(inject),即使我使用的是PreparedStatment。我无法确定问题出在哪里,或者这是否是扫描中可能出现的误报。请引用下面的代码(QueryBuffer是一个使用StringBuffer的自定义类):

List<ReferralService> list = new ArrayList<ReferralService>();
QueryBuffer sql = new QueryBuffer();
sql.addSql("SELECT rs.id FROM referral_service rs ");
sql.addSql("WHERE ");
sql.addSql("rs.closed = ? AND ");
sql.addSql("rs.workflow_id = ? ");
sql.addSql("ORDER BY submitted_on ASC limit 200");

PreparedStatement prepStmt = conn.prepareStatement(sql.toString());
prepStmt.setInt(1, 0);
prepStmt.setInt(2, liTeamID);
ResultSet rs = prepStmt.executeQuery();

最佳答案

看起来 veracode 对字符串连接不满意。

这更像是一种 SQL 注入(inject),将来当(另一个)开发人员扩展代码并向字符串添加不好的内容(例如变量)时,可能会发生这种情况。

因此请避免使用所有这些 addSql 字符串。

关于java - 如何使用预准备语句修复 SQL 注入(inject)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55513830/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com