php 防范 SQL 注入这样够不够

2015-02-07 08:54:46 +08:00
 liuhaotian
看了一些资料,自己这样子做还有啥问题。
1. 非富文本编辑,对于要用MySQL查询的语句得到的GET POST变量使用mysql_escape_string(),然后转义掉%和_。
2. 富文本编辑,mysql_escape_string()之后base64_encode存储。

这样子做还会有什么问题?还望各位指教。
4158 次点击
所在节点    问与答
29 条回复
belin520
2015-02-07 11:29:44 +08:00
大把第三方的数据库轮子,用一个,他们考虑的多了很多
liuhaotian
2015-02-07 11:52:20 +08:00
@belin520 虽然不想重新造轮子,但是感觉这种东西如果自己懂了还是听有好处的。
@lincanbin 这个参数绑定只支持PDO还是同时支持MySQLi?
我在这里http://segmentfault.com/q/1010000000688197看到有人说参数绑定不如过滤?能否解释下 不是很懂。
@lincanbin MySQLi是不是PDO和MySQL之间的过渡,所以还是用PDO比较好?
Moker
2015-02-07 11:55:19 +08:00
@kslr 不是远程 是 wamp本地搭建的测试环境
tabris17
2015-02-07 12:11:04 +08:00
不要手工拼接SQL语句,啥问题都解决了
lbp0200
2015-02-07 12:11:38 +08:00
绑定参数
lincanbin
2015-02-07 12:28:39 +08:00
@liuhaotian 只支持PDO,然后参数绑定是防御SQL注入的有效手段,用过滤引号之类的来防SQL注入再蠢不过了,不要信。
PDO主要是以后换数据库迁移会方便一些,例如以后不用MySQL了,换Oracle会方便些,另外PDO支持Dict型的参数绑定,比纯数组的要好用一些,在一些情境下。
liuhaotian
2015-02-07 12:51:12 +08:00
@lincanbin $result = $DB -> query("SELECT * FROM `pcc_node` WHERE `show`=?",array('2'));
这样为啥直接卡死了。。。
taogogo
2015-02-07 17:16:52 +08:00
放着我来,专业web安全工程师手把手教你。。。

反注入:参数绑定、mysql_escape单字段过滤(需统一字符集,最好全都是utf8)
反xss:字符白名单、dom解析过滤、css白名单
taogogo
2015-02-07 17:17:16 +08:00
需要web安全测试或者培训的话可以联系我

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

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

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

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

© 2021 V2EX