1
paranoia 2014-12-13 19:39:19 +08:00
这个看看开源的框架就好了,基本都是大同小异。
|
2
RemRain 2014-12-13 20:40:05 +08:00 1
看情况,如果没有必要,就不要尝试去过滤或者转义,更不要尝试自己写算法转义。
存储方面,如果存储是 redis、文件等本身就是二进制安全,不存在“注入”的存储系统,直接存取就行;对于像 mysql 等存在注入风险的存储,就使用 sql 绑定,这就是最靠谱的方式,千万不要尝试自己去转义和过滤,即使是 php 自身的函数。 输出方面,和数据库同理。如果需要输出 html,请使用模板引擎,不要自己去转义拼输出,即使是使用 php 自身的函数也不行。如果是 ajax 请求,就好办了,直接使用 $("#id").val(text) 的方式修改对应的字段就行。 转义和过滤的真谛就是:不要使用转义和过滤,不到万不得已的时候,千万不要使用转义和过滤,即使是语言本身提供的函数(除非你知道自己到底在做什么),尤其不要自己去实现过滤和转义,更不要上网随意找一段防 sql 注入之类代码来用。 |
3
abelyao OP |
4
lincanbin 2014-12-13 20:45:45 +08:00 1
过滤主要分两类:SQL注入过滤、XSS过滤
SQL注入过滤现在只要用MySQLi或者PDO做参数绑定,就不用管了,Magic Quotes这种过滤方法和MySQL类都是在PHP 5.3就被废弃的特性了。 例如使用PDO: https://github.com/lincanbin/PHP-PDO-MySQL-Class XSS过滤主要是对HTML进行转义,针对数据类型又分两种: 例如MarkDown之类的数据,直接进行HTML实体转义即可。 而HTML,除了Script标签还有各种on属性,都要过滤,一般用正则,写起来巨麻烦。 |