刚说到xss攻击..
我记得我之前做一个项目.就给检测出存在xss攻击。
开始我没有过滤提交的内容。
后来foreach 循环过滤每一个变量$_get...$_post...,发现不行。
然后只好写了个函数 直接检测 $_server[server_name] . $_server[request_uri] 判断直接 exit...
不知道大家都是怎么处理这个问题的...
------解决方案--------------------
htmlspecialchars过滤
------解决方案--------------------
htmlspecialchars
------解决方案--------------------
探讨
怎么过滤 过滤 $_get所有变量 ? 这样没用...我试过了.
引用:
htmlspecialchars过滤
------解决方案--------------------
php codedsa);foreach($array as &$value){ $value = htmlspecialchars($value);}var_dump($array);array(1) { [hello]=> &string(11) dsa<>}
------解决方案--------------------
探讨
你用
foreach($_get as &$value){
$value=htmlspecialchars($value);}
这样来过滤?
引用:
引用:
怎么过滤 过滤 $_get所有变量 ? 这样没用...我试过了.
引用:
htmlspecialchars过滤
没用是什……
------解决方案--------------------
给你这三个函数,你根据需求稍加修改就好了,以后要获取内容的时候不管是get还是post传值都用这样的方法来获取:
$变量名=toget('参数名或表单内的项目名');
php code//函数:获取数据//参数:表单名,是否需要转译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;}
------解决方案--------------------
这个得mark一下,继续~
------解决方案--------------------
xss又叫css (cross site script) ,跨站脚本攻击。它指的是恶意攻击者往web页面里插入恶意脚本代码,当用户浏览该页之时,嵌入其中web里面的脚本代码会被执行,从而达到恶意攻击用户的特殊目的。xss属于被动式的攻击,因为其被动且不好利用,所以许多人常忽略其危害性。
服务器端脚本防止 xss 的唯一手段是检查传入的数据中是否有 script 标记
当然,攻击者还有 n 多的手段去直接在你的页面中嵌入恶意代码。这就不是服务器端脚本能解决的问题了
简单的用 htmlspecialchars 处理一下,只适合于其后只将传入的数据作为字符串显示的场合。
由于
对于 #7 的 显然使用的检测算法不是最大匹配算法,而是简单的包含算法
虽无大错,但误判率升高。宁可错杀三千,不可放过一个
------解决方案--------------------
探讨
引用:
你用
foreach($_get as &$value){
$value=htmlspecialchars($value);}
这样来过滤?