站点参数安全过滤方案

来说说 系统参数安全过滤问题。

1.前置条件:

目前服务器配置:最好是关闭
magic_quotes_gpc  =On


2.安全过滤  (行为类):
可直接用阿里云文件全局控制。拦截

3.参数安全过滤和替换:
(默认I或者过滤类包(最基本转实体,剔除代码等,注意文章等编辑内容除外也不要转实体))
包含确保转义过滤(行为类):
确保不论魔术开关是否开启,进入系统的数据都是转义过的
参考NC的核心主干方法。

4.数据库插入前    字段过滤     处理:

入库前最终的转义即可
数据库过滤  (框架DB类库addslashes( stripslashes()))


综上,
整站防止SQL注入方案:

1.全局安全过滤----全局拦截

2.参数安全过滤和替换---默认I或者过滤类包(最基本转实体,剔除代码等,注意文章富文本编辑内容除外也不要转实体,直接入后端处理。如果插库前不判断转义则在数据进入后判断转义再进入,入库前反转义,转实体,插库)

(确保转义过滤的方法:addslashes( stripslashes())-----无论是ON还是OFF,先去再转义。还有注意不要二次转义入库)

3.如果参数进入没做转义,进入数据库之前做转义和一些特殊字符的处理(如下)。-----最终确保特殊字符转义入库不报错,特殊字符(按需定义一般是<>等,'或者/一般是允许的)和

代码要转实体,最好不要入库。

转义完入库,数据库会吃掉转义符。


$str = stripslashes($str);

   if($this->_linkID) {
       return mysql_real_escape_string($str,$this->_linkID);

   }else{

       return mysql_escape_string($str);//等同于addslashes()

   }

mysql_real_escape_string()


-----------------------

拦截---危险攻击代码。
替换过滤,html可先去转义符再转实体入库---危险字符。
转义(重点是在入库而不是进入)    ---入库不报错,要么进来处理要么入库前处理,但不要二次转义。

转义:
主要是防止一些符号歧义造成数据错误。
如你要保存一个词don't。如果你的sql语句用单引号引的话就变成'don't',这时t'就没有意义了,会认为是一个错误语句。另一个原因是为了防止sql注入攻击用的




原文地址:https://www.cnblogs.com/linewman/p/9918808.html