• 技术文章 >php框架 >YII

    yii2如何防止xss攻击

    藏色散人藏色散人2020-07-20 09:55:48原创884

    yii2防止xss攻击的方法:首先定义一个用于防xss攻击的“actionClean”方法;然后在方法体内实现去除特殊字符;最后调用该方法即可。

    PHP中常用到的方法有:

    推荐:《yii教程

     /*  防sql注入,xss攻击  (1)*/
        function actionClean($str)
        {
            $str=trim($str);
            $str=strip_tags($str);
            $str=stripslashes($str);
            $str=addslashes($str);
            $str=rawurldecode($str);
            $str=quotemeta($str);
            $str=htmlspecialchars($str);
            //去除特殊字符
            $str=preg_replace("/\/|\~|\!|\@|\#|\\$|\%|\^|\&|\*|\(|\)|\_|\+|\{|\}|\:|\<|\>|\?|\[|\]|\,|\.|\/|\;|\'|\`|\-|\=|\\\|\|/", "" , $str);
            $str=preg_replace("/\s/", "", $str);//去除空格、换行符、制表符
            return $str;
        }
    
    
        //防止sql注入。xss攻击(1)
        public function actionFilterArr($arr)
        {
            if(is_array($arr)){
                foreach($arr as $k => $v){
                    $arr[$k] = $this->actionFilterWords($v);
                }
            }else{
                $arr = $this->actionFilterWords($arr);
            }
            return $arr;
        }
    
    
        //防止xss攻击
       public function actionFilterWords($str)
        {
            $farr = array(
                "/<(\\/?)(script|i?frame|style|html|body|title|link|meta|object|\\?|\\%)([^>]*?)>/isU",
                "/(<[^>]*)on[a-zA-Z]+\s*=([^>]*>)/isU",
                "/select|insert|update|delete|drop|\'|\/\*|\*|\+|\-|\"|\.\.\/|\.\/|union|into|load_file|outfile|dump/is"
            );
            $str = preg_replace($farr,'',$str);
            return $str;
        }
    
        //防止sql注入,xss攻击(2)
        public function post_check($post) {
          if(!get_magic_quotes_gpc()) {
              foreach($post as $key=>$val){
                 $post[$key]  = addslashes($val);
              }
            }
          foreach($post as $key=>$val){
            //把"_"过滤掉
            $post[$key] = str_replace("_", "\_", $val);
            //把"%"过滤掉
            $post[$key] = str_replace("%", "\%", $val); //sql注入
            $post[$key] = nl2br($val);
            //转换html
            $post[$key] = htmlspecialchars($val); //xss攻击
          }
          return $post;
      }

    调用:

    (必须放在接收数据之外)

    注意:

    表单提交值,为防止csrf攻击,控制器中需要加上:

    以上就是yii2如何防止xss攻击的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:yii2
    上一篇:yii2 logo如何修改 下一篇:yii2项目Action报403错误怎么办
    大前端线上培训班

    相关文章推荐

    • yii2有什么缺点?• yii2如何打开gii• yii2如何设置错误信息语言• yii2 logo如何修改

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网