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攻击,控制器中需要加上:
为什么我提交的营业执照上传不了php如何强制输出错误信息云快照不见了-云服务器问题布局新零售 腾讯与永辉联手家乐福国内三款知名java商城系统浅析:shop 、shopnc、javashop我想知道业务备案码在哪里SEO点击工具排行榜 用SEO点击工具会被百度惩罚吗?区块链带来的五种模式