Rumah >pembangunan bahagian belakang >tutorial php >刚刚说到XSS攻击.
刚说到XSS攻击..
我记得我之前做一个项目.就给检测出存在XSS攻击。
开始我没有过滤提交的内容。
后来foreach 循环过滤每一个变量$_GET...$_POST...,发现不行。
然后只好写了个函数 直接检测 $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"] 判断直接 exit...
不知道大家都是怎么处理这个问题的...
------解决方案--------------------
htmlspecialchars过滤
------解决方案--------------------
htmlspecialchars
------解决方案--------------------
<?php $array = array("hello"=>"dsa");foreach($array as &$value){ $value = htmlspecialchars($value);}var_dump($array);array(1) { ["hello"]=> &string(11) "dsa<>"}<br><font color="#e78608">------解决方案--------------------</font><br>
//函数:获取数据//参数:表单名,是否需要转译Function Toget($__k,$Slash=True){ IF($__k==""){Return False;} IF(Array_key_exists($__k,$_REQUEST)){ $Value=IsSet($_POST["".$__k.""])?$_POST["".$__k.""]:$_GET["".$__k.""]; }Else{ Return False; } IF(Is_array($Value)){ $Value=Array_Filter($Value,'_nul'); }Else{ $Value=Trim($Value); IF($Value==""){Return False;} } IF($Slash){ $Value=Addlash($Value); } //反馈结果 IF(Is_array($Value)){Return $Value;} IF($Value=="" Or !Isset($Value)){ Return False; }Else{ Return $Value; }}function Addlash($Str){ !Defined('MAGIC_QUOTES_GPC') && Define('MAGIC_QUOTES_GPC',get_magic_quotes_gpc()); IF(!MAGIC_QUOTES_GPC){ IF(Is_array($Str)){ $keys=array_keys($Str); Foreach($keys as $key){ $val=$Str[$key];unset($Str[$key]); $Str[addslashes($key)]=Addlash($val); } }Else{ $Str=addslashes($Str); } } Return $Str;}//清理数组中的空值//用法:Print_r (Array_Filter($Arr,'_nul'));Function _nul($param){ Return ($param!="") ? True : False;}<br><font color="#e78608">------解决方案--------------------</font><br>这个得mark一下,继续~<br><font color="#e78608">------解决方案--------------------</font><br>XSS又叫CSS (Cross Site Script) ,跨站脚本攻击。它指的是恶意攻击者往Web页面里插入恶意脚本代码,当用户浏览该页之时,嵌入其中Web里面的脚本代码会被执行,从而达到恶意攻击用户的特殊目的。XSS属于被动式的攻击,因为其被动且不好利用,所以许多人常忽略其危害性。<br><br>服务器端脚本防止 XSS 的唯一手段是检查传入的数据中是否有 script 标记<br>当然,攻击者还有 n 多的手段去直接在你的页面中嵌入恶意代码。这就不是服务器端脚本能解决的问题了<br>简单的用 htmlspecialchars 处理一下,只适合于其后只将传入的数据作为字符串显示的场合。<br>由于 <script xss></script><br>对于 #7 的 <img src alt="刚刚说到XSS攻击." >显然使用的检测算法不是最大匹配算法,而是简单的包含算法<br>虽无大错,但误判率升高。宁可错杀三千,不可放过一个<br><br><br><br><br><font color="#e78608">------解决方案--------------------</font><br>