php如何过滤xss攻击

时间:2022-12-06 01:20

php如何过滤xss攻击

php过滤xss攻击的示例:

在对应的php文件中添加以下代码:

<?php

functionRemoveXSS($val){

//removeallnon-printablecharacters.CR(0a)andLF(0b)andTAB(9)areallowed

//thispreventssomecharacterre-spacingsuchas<java\0script>

//notethatyouhavetohandlesplitswith\n,\r,and\tlatersincethey*are*allowedinsomeinputs

$val=preg_replace('/([\x00-\x08,\x0b-\x0c,\x0e-\x19])/','',$val);

//straightreplacements,theusershouldneverneedthesesincethey'renormalcharacters

//thispreventslike<IMGSRC=@avascript:alert('XSS')>

$search='abcdefghijklmnopqrstuvwxyz';

$search.='ABCDEFGHIJKLMNOPQRSTUVWXYZ';

$search.='1234567890!@#$%^&*()';

$search.='~`";:?+/={}[]-_|\'\\';

for($i=0;$i<strlen($search);$i++){

//;?matchesthe;,whichisoptional

//0{0,7}matchesanypaddedzeros,whichareoptionalandgoupto8chars

//@@searchforthehexvalues

$val=preg_replace('/(&#[xX]0{0,8}'.dechex(ord($search[$i])).';?)/i',$search[$i],$val);//witha;

//@@0{0,7}matches'0'zerotoseventimes

$val=preg_replace('/(&#0{0,8}'.ord($search[$i]).';?)/',$search[$i],$val);//witha;

}

//nowtheonlyremainingwhitespaceattacksare\t,\n,and\r

$ra1=Array('javascript','vbscript','expression','applet','meta','xml','blink','link','style','script','embed','object','iframe','frame','frameset','ilayer','layer','bgsound','title','base');

$ra2=Array('onabort','onactivate','onafterprint','onafterupdate','onbeforeactivate','onbeforecopy','onbeforecut','onbeforedeactivate','onbeforeeditfocus','onbeforepaste','onbeforeprint','onbeforeunload','onbeforeupdate','onblur','onbounce','oncellchange','onchange','onclick','oncontextmenu','oncontrolselect','oncopy','oncut','ondataavailable','ondatasetchanged','ondatasetcomplete','ondblclick','ondeactivate','ondrag','ondragend','ondragenter','ondragleave','ondragover','ondragstart','ondrop','onerror','onerrorupdate','onfilterchange','onfinish','onfocus','onfocusin','onfocusout','onhelp','onkeydown','onkeypress','onkeyup','onlayoutcomplete','onload','onlosecapture','onmousedown','onmouseenter','onmouseleave','onmousemove','onmouseout','onmouseover','onmouseup','onmousewheel','onmove','onmoveend','onmovestart','onpaste','onpropertychange','onreadystatechange','onreset','onresize','onresizeend','onresizestart','onrowenter','onrowexit','onrowsdelete','onrowsinserted','onscroll','onselect','onselectionchange','onselectstart','onstart','onstop','onsubmit','onunload');

$ra=array_merge($ra1,$ra2);

$found=true;//keepreplacingaslongasthepreviousroundreplacedsomething

while($found==true){

$val_before=$val;

for($i=0;$i<sizeof($ra);$i++){

$pattern='/';

for($j=0;$j<strlen($ra[$i]);$j++){

if($j>0){

$pattern.='(';

$pattern.='(&#[xX]0{0,8}([9ab]);)';

$pattern.='|';

$pattern.='|(&#0{0,8}([9|10|13]);)';

$pattern.=')*';

}

$pattern.=$ra[$i][$j];

}

$pattern.='/i';

$replacement=substr($ra[$i],0,2).'<x>'.substr($ra[$i],2);//addin<>tonerfthetag

$val=preg_replace($pattern,$replacement,$val);//filteroutthehextags

if($val_before==$val){

//noreplacementsweremade,soexittheloop

$found=false;

}

}

}

return$val;

}

标签:
随便看看
本类推荐
本类排行
热门标签

我国国家通讯社行不行啊细狗新年贺词祝福语2023年祝福语新年新年贺词新年贺词祝福语居家抗病毒小药箱除夕高速免费吗2022年除夕高速免费吗春联春联句子大全春联句子大全七字年夜饭十二道菜年夜饭十二道菜单年夜饭吃什么年夜饭吃什么菜吃年夜饭的寓意年夜饭黑芝麻菊花茶晒菊花茶腌腊肉送妈妈生日礼物汉白玉送闺蜜水钻送女人礼物爸爸生日送礼物送老公