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( ????????????"/]*?)>/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攻擊,控制器中需要加上:
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END