云服务器网:购买云服务器和VPS必上的网站!

php:php如何过滤xss攻击

php如何过滤xss攻击php过滤xss攻击的示例:在对应的php文件中添加以下代码:<?phpfunctionRemoveXSS($val){//removeallnon-printablecharacters.CR(0a)andLF(0b)andTAB(9

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;

}

本文来源:https://www.yuntue.com/post/62810.html | 云服务器网,转载请注明出处!

关于作者: yuntue

云服务器(www.yuntue.com)是一家专门做阿里云服务器代金券、腾讯云服务器优惠券的网站,这里你可以找到阿里云服务器腾讯云服务器等国内主流云服务器优惠价格,以及海外云服务器、vps主机等优惠信息,我们会为你提供性价比最高的云服务器和域名、数据库、CDN、免费邮箱等企业常用互联网资源。

为您推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注