• 变量安全过滤,防止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 攻击

  • 相关阅读:
    qt忙等与非忙等
    获得文件路径 _pgmptr, _makepath, _splitpath
    RGB2YCbCr RGB2Gray
    qt Cannot connect creator comm socket /tmp/qt_temp.S26613/stub-socket: No such
    64位Ubuntu系统安装OpenCV 2.4.x+ffmpeg 完美解决方案
    vim按下ctrl+s僵死
    win32程序应用mfc库
    error LNK2005: _DllMain@12 已经在 dllmain.obj 中定义
    JavaScript中的浅拷贝和深拷贝
    Set和Map
  • 原文地址:https://www.cnblogs.com/chrdai/p/8575221.html
Copyright © 2020-2023  润新知