2012-01-04

CODE - 修正 php 的 DOS 問題

DOS 利用了 insert array 時的大量的 Hash Collision 造成 CPU 100%
幾乎所有語言都不能倖免 (除了 Perl)

紀錄一下同事提出的解決方式

1. 把 suhosin.so 放到 /home/php/lib/php/extensions/no-debug-non-zts-20060613/ 下
2. 在 php.ini 把它打開
extension=suhosin.so
3. 在 php.ini 加入下段, 把 session & cookie 加密功能關掉 (不要影響現行的系統功能)
;;;;;;;;;;;;;;;;;;;;
; suhosin Settings ;
;;;;;;;;;;;;;;;;;;;;
suhosin.session.encrypt = Off
suhosin.session.cryptua = Off
suhosin.session.cryptdocroot = Off
suhosin.cookie.encrypt = Off
suhosin.cookie.cryptua = Off
suhosin.cookie.cryptdocroot = Off
4. web server restart

這樣應該就可以了~
有些環境加入 suhosin.so 會有問題 (ex: zend framework)
不然就把 PHP 升級到 5.3.9 也是一個方法~

cf
http://bbs.facebook.idv.tw/thread-1179-1-1.html
http://www.zhaokunyao.com/archives/3141
http://www.hardened-php.net/suhosin/a_feature_list.html
http://www.hardened-php.net/suhosin/configuration.html



沒有留言:

張貼留言