Bitninja 是不是有 sql 注入误报?

Posted

技术标签:

【中文标题】Bitninja 是不是有 sql 注入误报?【英文标题】:Does Bitninja have sql injection false positives?Bitninja 是否有 sql 注入误报? 【发布时间】:2019-09-02 04:18:20 【问题描述】:

我正在尝试保存一些 php 代码,以便在我目前租用的服务器上保存示例和代码模板。问题是当我向服务器发送 $ 时,它会将其保存在数据库中,没问题。但是当我查询数据时,它告诉我有一个 sql 注入并阻止了我查询表的 IP 地址。 有趣的是,我的表有类别,问题仅在我查询“category_id=3”时出现,其他类别没有显示 $ 的数据。 总的来说,我意识到这可能是个问题,但是我所有的输入都被转义了,并且在特殊情况下都有特殊的措施,而且我的所有查询都是由相同的函数形成的。

我尝试将 $ 更改为 &dollar ;为了解决这个问题,以便在我忘记转义或我不知道的情况下,php 不会将其识别为变量,但结果是相同的。 当我以纯文本格式保存 html 实体时,我真的不明白为什么这可能是 BitNinja 的一个主要问题。 我知道我可以将代码保存在文件中,绕过数据库或 base64 代码并将其保存,但这不是这里的问题。

【问题讨论】:

我不使用 Bitninja,也不知道它如何检测或报告 SQL 注入风险。它可能有误报。一般来说,使用查询参数是一种更安全且更容易的方法,可以保护您的代码免受 SQL 注入风险。也许 Bitninja 试图让你使用参数化查询而不是转义。 无论如何,这里几乎没有人可以评论您的代码的安全性,或者它是合法警告还是误报,因为您没有显示 Bitninja 所说的存在风险的代码。 【参考方案1】:

假设您使用的是 WAF 模块,那么是的,它确实会产生误报(几乎所有 WAF 检测 SQL 注入都会产生误报)。在他们的blog entry 中,他们声明:

我们的 WAF 2.0 模块可保护您免受 SQL 注入。

在官方的 OWASP 核心规则集中,我们有一个针对这种攻击的规则集 向量。这是一个非常通用的规则集,因此如果您需要使用它 必须非常小心。我建议如果您启用它,请仅在日志中使用它 模式。

正如比尔在 cmets 中提到的,我们需要查看代码和数据,以确定这是否是真正的误报。

【讨论】:

以上是关于Bitninja 是不是有 sql 注入误报?的主要内容,如果未能解决你的问题,请参考以下文章

Java Veracode 扫描 - SQL 注入的误报

OWASP ZAP - 如何“证明”误报?

如何避免 SQL 查询检查 IS NULL 的误报?

扩展语法是不是会创建误报类型安全返回的对象?

声纳误报,“改变条件,使其并不总是评估为真。”

测试中的误报和漏报同样的值得反复修正