1
L5tEU4WX072p5P42 2019 年 12 月 26 日
放心, SQL 注入是过去时了, 现在的框架都可以抵御 SQL 注入.
|
2
ThirdFlame 2019 年 12 月 26 日
@Mogamigawa 不不不 框架有能力 ,不代表你就写不出来 sql 注入。
|
3
xiaochun41 2019 年 12 月 26 日
当你需要引用外部输入的变量去构建 sql 语句时候,对输入进行转义就可以了。
具体如何转义,各个语言的 mysql api 一般都有提供方法。 |
4
autung OP 这种广泛存在的问题应该是有规范的吧,有些网站是可以是用全部特殊符号,但是有些网站又会限制某些特殊符号,但是用提示和过滤显得有些麻烦,总不能每个接口有用户输入都要做这些提示吧,且这些特殊符号也有相应的使用场景,啊想想这一连串的问题,真是莫名的头大,而我只是一个改 bug 的垃圾小前端! want to go die !
|
5
autung OP @xiaochun41 我们老大说会有注入问题应该避免传特殊符号,我觉得这并不是一个好的方式,毕竟会莫名的增添很多麻烦
|
6
manami 2019 年 12 月 26 日
使用 mysql 的预编译语句可有效防止 sql 注入
```` // 省略…… PreparedStatement ps = con.prepareStatement(sql); ps.setString(xxx) // 省略…… ```` |
7
manami 2019 年 12 月 26 日
使用了预编译语句,特殊符号当成普通参数一样插入就行
|
8
xiaochun41 2019 年 12 月 26 日
@autung 你也可以直接在获取输入的地方,统一做一下,并不算麻烦。
|
9
sx90 2019 年 12 月 26 日
连 CPU 也有 BUG
不嫌累,不嫌加载过慢,就层层加密,层层审计 一般,直接用框架,多快好省 |
12
manami 2019 年 12 月 26 日
那只能在执行 sql 语句前对参数进行过滤了
|
13
VictorJing94 2019 年 12 月 26 日
关键词在后台过滤一下
|
14
autung OP @VictorJing94 我觉得这才是最正确的答案,毕竟前端的传递的内容和方式都不能信任
|
15
aguesuka 2019 年 12 月 26 日 via Android
用 instr 代替 like %param%查询
|
16
hhgfy 2019 年 12 月 26 日
% 用 '\' 转义吧
|
17
zrc 2019 年 12 月 26 日
instr ?
|
19
aguesuka 2019 年 12 月 26 日 via Android
不同的数据库也提供了转义符,谷歌的关键词叫 sql like ecsape
|
20
Felldeadbird 2019 年 12 月 26 日
前端不需要刻意处理。后端接收到你提交的数据库后,让后端连接数据库时,基于 SQL 进行预编译处理。
|
21
lovelive1024 2019 年 12 月 26 日
转义特殊字符
public static String escapeLikeValue(String value) { //String[] SPECIAL_CHARACTERS = {"%", "_", "[", "]", "^"}; for (String str : SPECIAL_CHARACTERS) { value = value.replace(str, "\\" + str); } return value; } |
22
zpf124 2019 年 12 月 26 日
Java 工具框架用多了, 我也向楼上一样 以为预编译的 sql 就能防御 mysql 的通配符。
不过 Mybatis 确实提供了 通配符的处理, 采用#{} 传的值已经被处理了,只有${} 才会出问题。 |
23
ahqiuy 2019 年 12 月 26 日
前两天刚刚遇到这种情况,做了 mybatis 的插件进行转义
|
24
fox0001 2019 年 12 月 26 日 via Android
我们用 Solr 实现所有查询,SQL 注入是不存在的
|
25
gaius 2019 年 12 月 26 日
like concat('%',#{},'%')不会注入,用$的情况需要 escapeSql
|
26
mary9 2019 年 12 月 26 日 via Android
1.%和_都是特殊字符,使用 escape 处理,具体搜 escape 用法。
2.其它语言不清楚,Go 用的原生 sql,值用?代替就可防止注入。 |
27
jss 2019 年 12 月 27 日 via iPhone
GO: 啥叫 SQL 注入…
|