gpt4 book ai didi

java - 解析 Java 源文件中的字符串文字以查找潜在的 SQL 注入(inject)

转载 作者:搜寻专家 更新时间:2023-11-01 03:13:02 27 4
gpt4 key购买 nike

在我们的 Java 项目中,我需要在 Java 源文件中找到潜在的 SQL 注入(inject)。

我们使用自己的 Java-SQL 前端类,所有相关的 SQL 查询都采用以下形式:

String someText = "potential SQL injection";
SQL.selectInto(
"SELECT C.LANGUAGE, " +
someText +
"FROM COMPANY C " +
"WHERE C.COMPANY_NR = :companyNr " +
"INTO :languageUid ",
new NVPair("companyNr", companyNr),
new NVPair("languageUid", languageUid)
);

问题是,变量“someText”可能包含另一个可能导致 SQL 注入(inject)的 SQL 字符串。

我正在寻找一种方法(正则表达式、java 解析器等...)来查找其中包含 SQL 的所有 java 字符串文字,它们具有某种可能包含 SQL 片段的字符串连接,因此我可以手动检查这些实例并在必要时重写它们。

我假设 SQL-stmts 仅与 SQL-helper 类一起使用,例如:

SQL.select(...)
SQL.insert(...)

最佳答案

也许 this question帮助。

一种快速简单的方法是检查提供的字符串是否包含任何SELECTINSERTUPDATEDELETE(不区分大小写)。没有这些子查询将无法工作,如果用户除了为所选字段提供正确的语法外还提供任何其他内容,查询将无法编译。

此外,执行语句的用户(很可能是某个系统用户)不应该有更改数据库结构的权限,即根本没有 DROP、ALTER XYZ 等语句。

关于java - 解析 Java 源文件中的字符串文字以查找潜在的 SQL 注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5378921/

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