程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP5.2.X防止Hash沖突拒絕服務攻擊的Patch方法

PHP5.2.X防止Hash沖突拒絕服務攻擊的Patch方法

編輯:關於PHP編程

文章分析了關於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

 

大家如果有用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下載包

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved