zoukankan      html  css  js  c++  java
  • 变量安全过滤,防止xss攻击

    下面这个方法不管是字符串还是数组,都可以进行过滤

    /**
     * @purpose     : 对变量进行安全过滤,使 $_GET、$_POST、$q->record 等变量更安全
     * @author      : daicr
     * @time        : 2018-03-15
     * @param       : array $fArray 需要转换的数组
     * @return      :array $fArray 转换完成的数组
     */
    function varFilter ($fArray) {
        if (is_array($fArray)) {
            foreach ( $fArray AS $_arrykey => $_arryval ) {
                if ( is_string($_arryval) ) {
                    $fArray[$_arrykey] = trim($fArray[$_arrykey]);                                        // 去除左右两端空格
                    $fArray[$_arrykey] = htmlspecialchars($fArray[$_arrykey]);                            // 将特殊字元转成 HTML 格式
                    $fArray[$_arrykey] = strip_tags($fArray[$_arrykey]);                                  // 从字符串中去除 HTML 和 PHP 标记
                    $fArray[$_arrykey] = str_replace('javascript', 'javascript ', $fArray[$_arrykey]);    // 禁止 javascript
                    if (!get_magic_quotes_gpc()) {                                                        // 当 magic_quotes_gpc 设置为 OFF 时,特殊字符加转移符 
                        $fArray[$_arrykey] = addslashes($fArray[$_arrykey]);
                    }
                }else if (is_array($_arryval)){        // 如果是数组,递归调用                    
                    $fArray[$_arrykey] = varFilter($_arryval);
                }
            }
        } else {
            $fArray = trim($fArray);                                    // 去除左右两端空格
            $fArray = htmlspecialchars($fArray);                        // 将特殊字元转成 HTML 格式
            $fArray = strip_tags($fArray);                              // 从字符串中去除 HTML 和 PHP 标记
            $fArray = str_replace("javascript", "javascript ", $fArray);// 禁止 javascript
            if (!get_magic_quotes_gpc()) {                                                        // 当 magic_quotes_gpc 设置为 OFF 时,特殊字符加转义符 
                $fArray = addslashes($fArray);
            }
        }
        Return $fArray;
    }

    下面这个方法只用于过滤字符串中的一些特殊字符

    /**
     * @purpose     :    字符串安全过滤函数,可过滤掉空格,*,",',;,<,>,{,},,../,..,./,UNION等
     * @author        :    daicr
     * @time        :    2018-03-15
     * @param         :    string $string 需要进行过滤的字符串
     * @return         :    string $string 过滤完毕的字符串
     */
    function strFilter($string) {
        $string = str_replace('%20','',$string);        // 过滤 空格
        $string = str_replace('%27','',$string);        // 过滤 '
        $string = str_replace('%2527','',$string);        // 过滤 '
        $string = str_replace('*','',$string);            // 过滤 *
        $string = str_replace('"','&quot;',$string);    // 将 " 转义为html实体
        $string = str_replace("'",'',$string);            // 过滤 '
        $string = str_replace('"','',$string);            // 过滤 "
        $string = str_replace(';','',$string);            // 过滤 ;
        $string = str_replace('<','&lt;',$string);        // 将 < 转义为html实体
        $string = str_replace('>','&gt;',$string);        // 将 > 转义为html实体
        $string = str_replace("{",'',$string);            // 过滤 {
        $string = str_replace('}','',$string);            // 过滤 }
        $string = str_replace('\','',$string);            // 过滤 
        $string = str_replace("../","",$str);            // 过滤 ../
        $string = str_replace("..","",$str);            // 过滤 ..
        $string = str_replace("./","",$str);            // 过滤 ./
        $string = str_ireplace("UNION","",$str);        // 忽略大小写过滤 UNION
        return $string;
    }

    对用户输入的字符串进行过滤,以防止 xss 攻击

  • 相关阅读:
    关于各种编程语言调用C星寻路插件的例子
    练习作品11:语音识别 准确度70%
    练习作品10:被一个傻叉坑了 要求把串口 封装到DLL中调用;
    Dynamics CRM 构建IN查询
    初识Spark2.0之Spark SQL
    从Dynamics CRM2011到Dynamics CRM2016的升级之路
    Dynamics CRM2011 导入解决方案报根组件插入错误的解决方法
    基于hadoop的BI架构
    Dynamics CRM 不同的站点地图下设置默认不同的仪表板
    Dynamics CRM 打开数据加密报错及修改用户邮件保存报错的解决方法
  • 原文地址:https://www.cnblogs.com/chrdai/p/8575221.html
Copyright © 2011-2022 走看看