首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > PHP >

刚刚说到XSS攻击.

2012-09-04 
刚说到XSS攻击..我记得我之前做一个项目.就给检测出存在XSS攻击。开始我没有过滤提交的内容。后来foreach 循

刚说到XSS攻击..
我记得我之前做一个项目.就给检测出存在XSS攻击。

开始我没有过滤提交的内容。

后来foreach 循环过滤每一个变量$_GET...$_POST...,发现不行。

然后只好写了个函数 直接检测 $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"] 判断直接 exit...

不知道大家都是怎么处理这个问题的...


[解决办法]
htmlspecialchars过滤
[解决办法]
htmlspecialchars
[解决办法]

探讨
怎么过滤 过滤 $_GET所有变量 ? 这样没用...我试过了.


引用:

htmlspecialchars过滤

[解决办法]
PHP code
<?php$array = array("hello"=>"dsa<>");foreach($array as &$value){     $value = htmlspecialchars($value);}var_dump($array);array(1) {  ["hello"]=>  &string(11) "dsa&lt;&gt;"}
[解决办法]
探讨

你用
foreach($_GET as &amp;$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 处理一下,只适合于其后只将传入的数据作为字符串显示的场合。
由于 <script 可以用回车、换行、制表都字符隔开,而不影响代码的执行。所以判断是否存在 XSS 威胁需要使用“串的最大匹配算法”。

对于 #7 的 <img src
显然使用的检测算法不是最大匹配算法,而是简单的包含算法
虽无大错,但误判率升高。宁可错杀三千,不可放过一个




[解决办法]
探讨

引用:

你用
foreach($_GET as &amp;amp;$value){
$value=htmlspecialchars($value);}

这样来过滤?





引用:

引用:
怎么过滤 过滤 $_GET所有变量 ? 这样没用...我试过了.


引用:

htmlspec……

热点排行