使用Mybatis检查SQL-Injection的输入

Igo*_*gor 1 java sql-injection mybatis

我想检查我的输入字符串是否有潜在的SQL注入.

这是我的类,方法和查询:

public class UserNamesQuery {

   public static String getUserNames(Map<String, Object> params) {
       String userNames = (String) params.get("userNames");
       return "SELECT * FROM users WHERE name IN (" + userNames + ") ";
   }

}
Run Code Online (Sandbox Code Playgroud)

是否有工具或快速方法来验证userNames没有SQL注入?

请注意,我使用的是Mybatis

You*_*nse 7

不,没有办法.没有必要.

坦率地说,没有"SQL注入"之类的东西.只有利用格式不正确的查询.

因此,通过使用预准备语句,您可以正确地格式化查询,而不是寻找任何"注入" .

任何数据,取决于上下文,可能是潜在的注入或无害的文本块.因此,无论过滤功能如何,都会有太多误报.更糟糕的是,无论过滤是一个"黑名单"实现,意味着它总是不完整的 - 只是不可能过滤掉用于开发注入的所有代码.

另一方面,准备好的陈述是一种相对简单的解决方案,即使不知道它也不会受到任何类型的注入.只是因为它不会让数据干扰查询.