PHP魔术报价引发的安全问题分析 浏览:125

通过提取魔术引号生成的PHP字符会带来一些安全问题,如下面的代码部分:


/ / phpxigr = 'ryat foo。
功能daddslashes($字符串,力= 0美元){
定义('magic_quotes_gpc)定义('magic_quotes_gpc ',get_magic_quotes_gpc());
如果(magic_quotes_gpc | | { $力!)
如果(is_array($字符串)){
foreach($字符串作为键=美元美元Val){
为字符串{ $关键} = daddslashes(美元价值,美元的力量);
}
{人}
$字符串addslashes($字符串);
}
}
返回$字符串;
}

foreach(数组('_cookie ','_post ','_get)达_request){
foreach(_request美元美元美元_key = _value){
_key美元{ 0 }!_key = = $(美元daddslashes _value)'_;
}
}
echo $ xigr {嗨};
回声


上面的代码都将获得一个daddslashes($ xigr {嗨})的安全处理后的数组变量之后,却没有对变量$ xigr类型有严格规定的,当我们提交一个字符串变量$ xigr = 'ryat,为 'ryat经过上述处理后,达到xigr {喂}将输出,如果变量引入到SQL语句。它会造成严重的安全问题,以下代码片段:



如果($ xigr){
foreach(xigr美元美元美元K = v){
UID { } =美元$ V { 'uid};
}
查询=美元美元DB ->查询(选择用户的UID(UID在崩溃,(。




以上述思想,通过提交foo。phpxigr { } = { } { } = 'xigr UID evilcode的建筑形式,很容易突破GPC或类似的安全处理,并形成SQL注入漏洞,应引起足够的重视这。

推荐文章1
广告