zoukankan      html  css  js  c++  java
  • 站点参数安全过滤方案

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

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




  • 相关阅读:
    全局上下文(GO)
    重写数组拓展方法
    spring + spring mvc 使用 maven 编译出现异常
    shiro 配置注解后无权访问不进行页面跳转异常:org.apache.shiro.authz.UnauthorizedException: Subject does not have permission
    shiro 配置注解异常 java.lang.ClassNotFoundException: org.aspectj.util.PartialOrder$PartialComparable
    kaptcha 配置
    maven 安装 jar 包
    jsp 页面 javax.servlet.jsp.JspException cannot be resolved to a type 异常
    操作系统下载地址
    java file 常用操作
  • 原文地址:https://www.cnblogs.com/linewman/p/9918808.html
Copyright © 2011-2022 走看看