我们的团队希望更好地遵守OWASP指南,其中一个任务是预防SQL注入攻击。为了促进这一点,我正在寻找一种自动检查我们代码库中的使用生成的方法,因此可以标记并更改为使用java.sql.Statement

我们的构建过程基于Maven,我们还有Sonar设置以在项目上运行Analytics。如果满足某些阈值,某些规则已经在Sonar失败,因此如果满足某些阈值,则可以在那里实施这一点。我已经看过我可以在哪里设置核心型正则表达式规则寻找导入,但我想看看是否还有其他选项。

沿着开发/构建路径的任何位置都将起作用。如果Intellij中有一些东西,那将在Maven构建过程中的某些东西,或者在声纳中的不同方式标记这一点,这些都会很好。

谢谢!!

有帮助吗?

解决方案

我建议在Sonar中创建架构约束

该示例演示了禁止使用* java.sql。**类的规则。

其他提示

我没有使用它,但 pmd 看起来它可能是一个很好的工具。

除了检测类的用法之外,您还可以使用java.sql.Connection代理检测它们的生成吗?当您从工厂获得连接时,可以将其包装在代理中。当人们使用createStatement()或其他非限制调用时,您的代理将能够进行方法调用,记录查询字符串和/或报告堆栈跟踪。 通用标签

如果您不想在生产中变得过于繁重,那么您总是可以对它们进行计数,并具有一般的tagtag类型的标志,以便仅允许在一段时间内进行抽样以查找问题。也许最初您需要进行一些采样,攻击80%的位置,然后只有在处理完应用程序的高查询负载部分后,才能永久启用检测。

如果您没有包装连接的中心位置,则可能需要包装连接池或工厂链。

希望这会有所帮助。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top