php专区

 首页 > php专区 > PHP应用 > 常用功能 > PHP5.2.X防止Hash冲突拒绝服务攻击的Patch方法 - ph

PHP5.2.X防止Hash冲突拒绝服务攻击的Patch方法 - ph

分享到:
【字体:
导读:
          上周的时候Dmitry突然在5.4发布在即的时候,引入了一个新的配置项:Added max_input_vars directive to prevent attacks based on hash collision这个预防的攻击,就是通过调用Hash冲突实现......

PHP5.2.X防止Hash冲突拒绝服务攻击的Patch方法

上周的时候Dmitry突然在5.4发布在即的时候,引入了一个新的配置项:

Added max_input_vars directive to prevent attacks based on hash collision这个预防的攻击,就是”通过调用Hash冲突实现各种语言的拒绝服务攻击漏洞”(multiple implementations denial-of-service via hash algorithm collision).

攻击的原理很简单,目前很多语言,使用hash来存储k-v数据,包括常用的来自用户的POST数据, 攻击者可以通过构造请求头,并伴随POST大量的特殊的”k”值(根据每个语言的Hash算法不同而定制),使得语言底层保存POST数据的Hash表因为”冲突”(碰撞)而退化成链表.

这样一来,如果数据量足够大,那么就可以使得语言在计算,查找,插入的时候,造成大量的CPU占用,从而实现拒绝服务攻击.

PHP5.4是通过增加一个限制来尽量避免被此类攻击影响:

 - max_input_vars - specifies how many GET/POST/COOKIE input variables may be accepted. default value 1000 //phpfensi.com

大家如果有用5.2的, 如果被此类攻击威胁,可以打上下面的patch, PHP5.3的, 可以考虑升级到5.3.9, 已经包含了此patch(因为5.3.9目前是RC状态,所以如果不愿意升级, 也可以参照这个patch自己为5.3写一个):

防止办法

1.Cd into the PHP src run: patch -p1 < php-5.2.*-max-input-vars.patch

2.Since the latest PHP 5.3.9-RC4 has fixed this issue, so for 5.3 you can upgrade to 5.3.9RC4

Of course if you don't want to upgrade to a RC version, you can simply tweak this patch into a 5.3 suitable patch.

大家可到https://github.com/laruence/laruence.github.com/tree/master/php-5.2-max-input-vars下载包.

分享到:
PHP-5.3.9远程执行任意代码漏洞 - php高...
PHP-5.3.9远程执行任意代码漏洞 还记得我之前说的PHP Hash Collisions Ddos漏洞吧? 最初的时候,开发组给出的修复方案,采用的是如果超过max_input_vars,就报错(E_ERROR),继而导致PHP出错结束,而后来,为了更加轻量级的解决这个问题,我们又改善了一下,变成了如果超过max_input_vars,就发出警告(E...
php实现禁止IP段访问网站的代码 - php高...
php实现禁止IP段访问网站的代码 有个前提条件是我们的页面必须是php类型的页面,如果你生成了html静态页面这种方法就不可行了,下面我们来看看php实现禁止IP段访问网站的代码,代码如下:  
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……