各位大佬, mysql 中模糊查询 % 和 _这个特殊符号的有什么解决方法?传递特殊符号会有注入问题么?有的话一般怎么解决?

2019-12-26 09:55:58 +08:00
 autung
3538 次点击
所在节点    程序员
27 条回复
ily433664
2019-12-26 11:18:34 +08:00
转义特殊字符
public static String escapeLikeValue(String value) {
//String[] SPECIAL_CHARACTERS = {"%", "_", "[", "]", "^"};
for (String str : SPECIAL_CHARACTERS) {
value = value.replace(str, "\\" + str);
}
return value;
}
zpf124
2019-12-26 11:36:49 +08:00
Java 工具框架用多了, 我也向楼上一样 以为预编译的 sql 就能防御 mysql 的通配符。

不过 Mybatis 确实提供了 通配符的处理, 采用#{} 传的值已经被处理了,只有${} 才会出问题。
ahqiuy
2019-12-26 12:10:09 +08:00
前两天刚刚遇到这种情况,做了 mybatis 的插件进行转义
fox0001
2019-12-26 12:54:57 +08:00
我们用 Solr 实现所有查询,SQL 注入是不存在的
gaius
2019-12-26 14:28:02 +08:00
like concat('%',#{},'%')不会注入,用$的情况需要 escapeSql
mary9
2019-12-26 23:33:13 +08:00
1.%和_都是特殊字符,使用 escape 处理,具体搜 escape 用法。
2.其它语言不清楚,Go 用的原生 sql,值用?代替就可防止注入。
jss
2019-12-27 00:47:42 +08:00
GO: 啥叫 SQL 注入…

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/632422

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX