gpt4 book ai didi

java - java 中的preparedStatement 上的HP Fortify SQL 注入(inject)问题

转载 作者:行者123 更新时间:2023-12-01 22:18:49 30 4
gpt4 key购买 nike

我正在使用 HP Fortify 来测量 Java 代码的代码质量。

HP Fortify 报告SQL 注入(inject)错误

PreparedStatement stmt = connnection.prepareStatement(queryString);

那么如何解决这个问题呢?

最佳答案

根据我的经验,如果 HP Fortify 无法跟踪您用来将 queryString 构建为常量的所有字符串的来源,则在这种情况下 HP Fortify 将报告错误。如果从磁盘读取字符串的任何部分或作为请求参数传递,则您将面临 SQL 注入(inject)攻击的风险。

建议的解决方案是在构建 SQL 查询字符串时永远不要使用外部字符串。您的 SQL 字符串应该只从字符串常量构建,并且在运行时插入的每个参数都应该作为绑定(bind)变量插入,这意味着它的位置应该显示为“?”在 SQL 字符串中,其值应使用 PreparedStatement 的 setX() 方法设置类。

请注意,在 Java 中创建PreparedStatements 时应始终使用绑定(bind)变量:这不仅是一种良好的安全实践,也是一种良好的性能实践,因为它不需要数据库在每次参数值更改时重新解析 SQL 查询.

关于java - java 中的preparedStatement 上的HP Fortify SQL 注入(inject)问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30388787/

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