• 站点参数安全过滤方案


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

    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注入攻击用的




  • 相关阅读:
    Gradle 10分钟上手指南
    java并发编程学习: 原子变量(CAS)
    java并发编程学习: 守护线程(Daemon Thread)
    java并发编程学习: 阻塞队列 使用 及 实现原理
    java并发编程学习: ThreadLocal使用及原理
    java并发编程学习:如何等待多个线程执行完成后再继续后续处理(synchronized、join、FutureTask、CyclicBarrier)
    ZooKeeper 笔记(5) ACL(Access Control List)访问控制列表
    gradle项目与maven项目相互转化
    rpc框架之 thrift连接池实现
    java并发编程学习:用 Semaphore (信号量)控制并发资源
  • 原文地址:https://www.cnblogs.com/linewman/p/9918808.html
Copyright © 2020-2023  润新知