PHPをparse_strで殴り続けると死ぬ
$ php -r 'parse_str(implode("&a", range(0,1000)), $x);' [~]
PHP Warning: parse_str(): Input variables exceeded 1000. To increase the limit change max_input_vars in php.ini. in Command line code on line 1 PHP Stack trace: PHP 1. {main}() Command line code:0 PHP 2. parse_str() Command line code:1
_人人 人人_
> 突然の死 <
 ̄Y^Y^Y^Y ̄
$ php -d max_input_vars=1 -r 'parse_str("a&b", $x);' [~]
PHP Warning: parse_str(): Input variables exceeded 1. To increase the limit change max_input_vars in php.ini. in Command line code on line 1 PHP Stack trace: PHP 1. {main}() Command line code:0 PHP 2. parse_str() Command line code:1
oh, my..
parse_str() が使用している仕組みは PHP が $_GET や $_POST などの設定に使用しているものと同じ
http://php.net/manual/ja/function.parse-str.php
That's not says in the description but max_input_vars directive affects this function.
http://www.php.net/manual/ja/function.parse-str.php#108642
max_input_varsは昨年導入されました
参考:Webアプリケーションに対する広範なDoS攻撃手法(hashdos)の影響と対策
- http://blog.tokumaru.org/2011/12/webdoshashdos.html
参考:DoS回避用の max_input_vars が出てきました
- http://d.hatena.ne.jp/gallu/20120111/p1