PHP preg_match()函数信息泄露漏洞
发布日期:2009-09-27
更新日期:2009-09-29
受影响系统:PHP PHP <= 5.3
描述:
PHP是广泛使用的通用目的脚本语言,特别适合于Web开发,可嵌入到HTML中。
PHP所使用的preg_match()函数从用户输入字符串获得参数,如果所传送的值为数组而不是字符串就会生成警告,警告消息中包含有当前运行脚本的完整路径。
<*来源:David Vieira-Kurz
链接:
http://marc.info/?l=bugtraq&m=125415056222332&w=2
*>
测试方法:
警 告
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
http://localhost/cms/modules/system/admin.php?fct=users&op[]=
Warning: preg_match() expects parameter 2 to be string, array given in
/htdocs/cms/include/common.php on line 105
建议:
临时解决方法:
<?PHP
if(isset($_GET['page'])) {
if (is_array($page = $_GET['page'])) {
$casted = (string)$page;
} else {
$page = htmlspecialchars($_GET['page'],ENT_QUOTES,'UTF-8');
validate_alpha($page);
}
}
function validate_alpha($page) {
return preg_match("/^[A-Za-z0-9_-]+$/ ", $page);
} ?>
厂商补丁:
PHP
---
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
http://www.php.net浏览次数:3291
严重程度:0(网友投票)