gpt4 book ai didi

java - 使用 Mybatis 检查 SQL 注入(inject)的输入

转载 作者:行者123 更新时间:2023-11-29 06:55:13 24 4
gpt4 key购买 nike

我想检查我的输入字符串是否存在潜在的 SQL 注入(inject)。

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

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 + ") ";
}

}

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

注意我用的是Mybatis

最佳答案

没有。不可能。而且不需要。

坦率地说,没有“SQL注入(inject)”这样的东西。只有利用格式不正确的查询

因此,您不必寻找任何“注入(inject)”,而是通过使用准备好的语句来正确格式化您的查询。

根据上下文,任何数据都可能是潜在的注入(inject)或无害的文本 block 。因此,无论使用何种过滤功能,都会有太多的误报。更糟糕的是,无论过滤是“黑名单”实现,都意味着它总是是不完整的——不可能过滤掉所有用于利用注入(inject)的代码。

另一方面,prepared statement 是一个相对简单的解决方案,可以在不知情的情况下免疫任何类型的注入(inject)。只是因为它不会让数据干扰查询.

关于java - 使用 Mybatis 检查 SQL 注入(inject)的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35843211/

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