如何优雅的防止 sql 注入?

2015-11-12 08:52:20 +08:00
 cocalrush
最近遇到一个麻烦,有一个文本框可以输入任何文本。
现在的解决方案是拦截参数里面的敏感符号(-- ‘ 等)和敏感词( select and 等),但是总觉得不够好。
想请问下如何优雅的防止 sql 注入呢?
非常感谢。
6720 次点击
所在节点    问与答
59 条回复
Ouyangan
2015-11-12 10:46:54 +08:00
PreparedStatement . 学习的时候没讲过么...
penjianfeng
2015-11-12 11:01:08 +08:00
一看就是被知乎害的,啥事儿都要来个”优雅“, WTF ,你先说吧 sql 注入给搞定再说优雅不优雅吧,没学会走就像跑了
powergx
2015-11-12 11:05:55 +08:00
orm
hqs123
2015-11-12 11:09:07 +08:00
这个没有优雅不优雅之说,只能预防和发生入侵启用紧急方案。
yangxiongwei
2015-11-12 11:11:26 +08:00
既然是 Java 项目,用 Druid 做数据源吧

Druid 基于 SQL 语义分析来实现防御 SQL 注入攻击。
hgc81538
2015-11-12 11:28:49 +08:00
各種語言對注入的解決方法,可參考
http://bobby-tables.com
500miles
2015-11-12 12:08:05 +08:00
我靠靠靠靠靠靠靠靠

嘛玩意儿都要优雅...............

被人脱裤了最优雅
cocalrush
2015-11-12 12:13:52 +08:00
@hgc81538 哈哈 这个有趣~ 感谢。
muzuiget
2015-11-12 12:39:59 +08:00
现在还手工拼 SQL ?
redkei
2015-11-12 13:33:55 +08:00
如何优雅的。。。?

**是一种什么样的体验?

对不起看到这种知乎风就反胃,忍不住吐槽下能不能正常说话
kendetrics
2015-11-12 13:36:54 +08:00
参数化
canesten
2015-11-12 13:49:15 +08:00
用 Java 的没听过 MyBatis 么
fwings260
2015-11-12 16:47:30 +08:00
借楼问问,防 SQL 注入,前端能做啥?
crazycen
2015-11-12 16:49:47 +08:00
不用 sql 就好
Garantion
2015-11-12 17:53:08 +08:00
@virusdefender 刚刚还想说长亭的 sqlchop 支持!
ivvei
2015-11-12 18:33:21 +08:00
Java 就不能 PrepareStatement 了?一样可以的吧!
mornlight
2015-11-12 19:27:48 +08:00
@fwings260
SQL 注入是服务端问题,前端啥都干不了,前端做的把戏只能骗骗无聊用户。
dallaslu
2015-11-12 20:24:10 +08:00
为每一条 SQL 写一个正则判断。如:

select * from user where username='v2ex' and password='235512'

对应正则

^select \* from user where username='\w+' and password='\w+'$
cevincheung
2015-11-12 20:31:25 +08:00
@dallaslu 这要是写个大系统不要死
dallaslu
2015-11-12 20:42:43 +08:00
@cevincheung 你要优雅还是要命

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

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

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

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

© 2021 V2EX