如何优雅的防止 sql 注入?

2015-11-12 08:52:20 +08:00
 cocalrush
最近遇到一个麻烦,有一个文本框可以输入任何文本。
现在的解决方案是拦截参数里面的敏感符号(-- ‘ 等)和敏感词( select and 等),但是总觉得不够好。
想请问下如何优雅的防止 sql 注入呢?
非常感谢。
6145 次点击
所在节点    问与答
59 条回复
Andy1999
2015-11-12 08:54:46 +08:00
PDO
a302800411
2015-11-12 08:55:13 +08:00
执行 SQL 的时候函数用两个参数那种?
tobyxdd
2015-11-12 08:56:59 +08:00
PreparedStatement😂😂
cocalrush
2015-11-12 09:01:03 +08:00
@Andy1999 感谢~。现在目前用的是 JAVA (逃)...
mcone
2015-11-12 09:03:00 +08:00
浓浓的知乎装某器官范儿,你这问题风格应该拉去知乎

个人感觉这东西要啥优雅,又没人看得到,管用就行。优雅如不成,被 x 了就不好玩了
cocalrush
2015-11-12 09:03:20 +08:00
@a302800411
@tobyxdd
感谢 目前也用了 PreparedStatement... 但是我司觉得还是不够放心 - -!
cocalrush
2015-11-12 09:06:55 +08:00
@mcone 是的,我也是这么想的。
以前都过滤了"and"字符。但是在英文版上 老外输"and"不是一般的多。所以造成了误杀很多。现在精简了下,所以上来问下有没更好的方案。
刚刷了知乎回来, bigger 条涨满了没法释放...
echo1937
2015-11-12 09:07:39 +08:00
口口相传 PreparedStatement 可以防注入,多的我也不知道。
barbery
2015-11-12 09:20:55 +08:00
必须 prepare 啊,原生防注入
gdtv
2015-11-12 09:23:32 +08:00
用了 prepare 就可以了,这个完全不是问题,我担心的是带有危险的 js 脚本或者 xss ,这些才麻烦
winterock
2015-11-12 09:26:55 +08:00
专业的事交给专业的人。
网络攻击这种事情,我只能说防不胜防。
试试知道创宇或者安全宝。
tabris17
2015-11-12 09:31:22 +08:00
放弃拼接 SQL 保平安
HentaiMew
2015-11-12 09:32:33 +08:00
优雅这个词真的是被用烂了…
xwing
2015-11-12 09:33:47 +08:00
坚决不用 sql 拼接。 设置数据库操作权限。如果是 java 的话,为什么不用 ORM ?
zrp1994
2015-11-12 09:36:07 +08:00
base64 加密下?如果不需要查询其中的内容……
virusdefender
2015-11-12 09:37:27 +08:00
字符串过滤只能骗自己

欢迎试试 http://sqlchop.chaitin.com/
cocalrush
2015-11-12 09:52:59 +08:00
@barbery
@echo1937
@gdtv
妥~
XSS 是真麻烦...
cocalrush
2015-11-12 09:56:12 +08:00
@xwing 也有用 ORM 但是有些查询还是得原生 sql
cocalrush
2015-11-12 09:56:53 +08:00
@virusdefender 这个有点意思... 找时间研究下 感谢。
thinkmore
2015-11-12 10:17:24 +08:00
最好让用户不能输入自定义 sql ,为什么一定要把 sql 接口暴露给用户呢?
@cocalrush
至于 css 和 js ,一般转义还是能够解决问题的

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

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

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

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

© 2021 V2EX