故意进行的 SQL 注入有名称吗?

问题描述 投票:0回答:1

我需要连接字符串来生成要执行的查询,主要是因为参数不能在我需要的地方使用。

例如,DB2 中的

FETCH NEXT <n> ROWS
子句不接受 JDBC 参数,而只接受字符串。以下代码崩溃:

int limit = 100;
PreparedStatement ps = conn.prepareStatement(
  "SELECT * FROM EMPLOYEE ORDER BY SALARY FETCH NEXT ? ROWS ONLY"); // crashes
ps.setInt(limit);

当以下代码有效时:

int limit = 100;
PreparedStatement ps = conn.prepareStatement(
  "SELECT * FROM EMPLOYEE ORDER BY SALARY FETCH NEXT " + limit
  + " ROWS ONLY"); // works

这在技术上是“SQL 注入”(我认为),但它是故意的,而且也是安全的。

有没有比“SQL 注入”更好的名称来描述这一点?我需要向保安人员解释这一点,我不想被咆哮。

sql database sql-injection
1个回答
0
投票

您只是根据数据构建 SQL 语句。这不是 SQL 注入。如果您的

limit
变量来自外部,则会发生 SQL 注入。

© www.soinside.com 2019 - 2024. All rights reserved.