对于 CI 管道中的 SAST 检查,我们使用 Semgrep 和 SpotBugs 扫描仪。该扫描器发现以下情况作为 SQL 注入的实例。
存储库类
Query q = em.createNativeQuery(FIND_PRODUCTS_BY_IDENTIFER);
q.setParameter("productidentifier", productIdentifierParam);
FIND_PRODUCTS_BY_IDENTIFER 位于单独的类中,并定义为常量
public static final String FIND_PRODUCTS_BY_IDENTIFER =“从产品中选择产品ID,其中ID位于(:productidentifier)”;
查询是参数化的,不是 SQL 注入的情况,是误报。任何人都可以阐明必须更改哪些内容才能消除此违规行为(或者)这是否已经是 Semgrep 分析器的已知错误。
您使用的是OSS社区创建的规则还是AppSec平台的Pro规则?社区创建的规则存在一些误报,但如果您愿意,您可以自行修复它们。我知道我的回答很晚了,但这里的关键是,当您使用带有社区规则的 OSS 版本时,它们是......尽力而为。
您可以通过加入我们的 Slack 来获得更多支持:https://bit。 ly/ semgrepslack 或者在学院参加一些规则编写课程(这样你就可以自己修复它): https://academy.semgrep.dev