回答編集履歴
3
常体を敬体に変更した。
answer
CHANGED
@@ -21,33 +21,35 @@
|
|
21
21
|
この設定により対処できる可能性があります。
|
22
22
|
|
23
23
|
### max_input_varsが使用できるバージョンについて
|
24
|
-
正式なリリースとしては、[ドキュメント](http://php.net/manual/ja/info.configuration.php)にもある通り、5.3.9以降で使用でき
|
24
|
+
正式なリリースとしては、[ドキュメント](http://php.net/manual/ja/info.configuration.php)にもある通り、5.3.9以降で使用できますが、
|
25
|
-
後述する通り、セキュリティ的な面で5.3.11以降、5.4.1以降の方が望ましい。
|
25
|
+
後述する通り、セキュリティ的な面で5.3.11以降、5.4.1以降の方が望ましいと思います。
|
26
26
|
|
27
27
|
正式なリリースとは別に、max_input_varsはセキュリティ的な問題([CVE-2011-4885](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2011-4885))の対処のため、
|
28
|
-
パッチが存在し、rpmなどでは、パッチを含むバージョンがリリースされてい
|
28
|
+
パッチが存在し、rpmなどでは、パッチを含むバージョンがリリースされています。
|
29
29
|
なお、使用する際は、このパッチによって入り込んだ[CVE-2012-0830](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2012-0830)も対処されたバージョンが
|
30
|
-
望ましいと考えられ
|
30
|
+
望ましいと考えられます。
|
31
|
-
ちなみに、正式なリリースでCVE-2012-0830が修正されたのは、[このコミット](https://github.com/php/php-src/commit/40d8cd1f122873af7e21dfe4cad24702c4be48f9#diff-28ccb3aa37e01a68f5510ad6de4ab738)によると考えられ
|
31
|
+
ちなみに、正式なリリースでCVE-2012-0830が修正されたのは、[このコミット](https://github.com/php/php-src/commit/40d8cd1f122873af7e21dfe4cad24702c4be48f9#diff-28ccb3aa37e01a68f5510ad6de4ab738)によると考えられますが、
|
32
|
-
これはphp-5.3.11、php-5.4.1でリリースされてい
|
32
|
+
これはphp-5.3.11、php-5.4.1でリリースされています。
|
33
33
|
|
34
|
-
php-5.3.3の[rpm](https://rpmfind.net/linux/RPM/centos/updates/6.7/x86_64/Packages/php-5.3.3-46.el6_6.x86_64.html)について調べると、CVE-2011-4885は5.3.3-4、CVE-2012-0830は
|
34
|
+
php-5.3.3の[rpm](https://rpmfind.net/linux/RPM/centos/updates/6.7/x86_64/Packages/php-5.3.3-46.el6_6.x86_64.html)について調べると、CVE-2011-4885は5.3.3-4、CVE-2012-0830は
|
35
|
+
5.3.3-7で対応しています。
|
35
36
|
|
36
37
|
### max_input_varsの判定方法の変化について
|
37
|
-
max_input_varsの判定方法は、バージョンによって異な
|
38
|
+
max_input_varsの判定方法は、バージョンによって異なります。
|
38
39
|
|
39
40
|
1. ハッシュの要素数による不完全な方法(php-5.4.0、php-5.3.10以前)
|
40
41
|
```
|
41
42
|
zend_hash_num_elementsを使っており、PostデータにArrayがある場合に、
|
42
43
|
Arrayのサイズがmax_input_vars+1になった際にエラーメッセージを出し、
|
43
|
-
max_input_vars+2以上になると無視す
|
44
|
+
max_input_vars+2以上になると無視します。
|
44
45
|
例)
|
45
|
-
data[100][100][100]のデータは、1000000件にな
|
46
|
+
data[100][100][100]のデータは、1000000件になりますが、max_input_varsが1000の場合、
|
46
|
-
それぞれのサイズは100なので、制限にかからず、全てのデータを読み込んでしま
|
47
|
+
それぞれのサイズは100なので、制限にかからず、全てのデータを読み込んでしまいます。
|
47
48
|
```
|
48
49
|
2. 正確な方法(php-5.6以降 、php-5.5以降、php-5.4.1以降、php-5.3.11以降)
|
49
|
-
[Improved max_input_vars directive to check nested variables](https://github.com/php/php-src/commit/282d3f20349b78eeed0173a2e55d311324faeb4d)というコミットによって修正された。
|
50
|
+
[Improved max_input_vars directive to check nested variables](https://github.com/php/php-src/commit/282d3f20349b78eeed0173a2e55d311324faeb4d)というコミットによって修正されました。
|
50
51
|
```
|
51
|
-
実際にパースしながら、データの数を数え、データの数がmax_input_varsを超えると、
|
52
|
+
実際にパースしながら、データの数を数え、データの数がmax_input_varsを超えると、
|
53
|
+
エラーメッセージを出して無視します。
|
52
54
|
```
|
53
55
|
|
2
max_input_varsについて追記した。
answer
CHANGED
@@ -18,4 +18,36 @@
|
|
18
18
|
|
19
19
|
設定の説明は、[ここ](http://suhosin.org/stories/configuration.html)にあります。
|
20
20
|
Suhosinモジュールが適用されているのであれば、
|
21
|
-
この設定により対処できる可能性があります。
|
21
|
+
この設定により対処できる可能性があります。
|
22
|
+
|
23
|
+
### max_input_varsが使用できるバージョンについて
|
24
|
+
正式なリリースとしては、[ドキュメント](http://php.net/manual/ja/info.configuration.php)にもある通り、5.3.9以降で使用できるが、
|
25
|
+
後述する通り、セキュリティ的な面で5.3.11以降、5.4.1以降の方が望ましい。
|
26
|
+
|
27
|
+
正式なリリースとは別に、max_input_varsはセキュリティ的な問題([CVE-2011-4885](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2011-4885))の対処のため、
|
28
|
+
パッチが存在し、rpmなどでは、パッチを含むバージョンがリリースされている。
|
29
|
+
なお、使用する際は、このパッチによって入り込んだ[CVE-2012-0830](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2012-0830)も対処されたバージョンが
|
30
|
+
望ましいと考えられる。
|
31
|
+
ちなみに、正式なリリースでCVE-2012-0830が修正されたのは、[このコミット](https://github.com/php/php-src/commit/40d8cd1f122873af7e21dfe4cad24702c4be48f9#diff-28ccb3aa37e01a68f5510ad6de4ab738)によると考えられるが、
|
32
|
+
これはphp-5.3.11、php-5.4.1でリリースされている。
|
33
|
+
|
34
|
+
php-5.3.3の[rpm](https://rpmfind.net/linux/RPM/centos/updates/6.7/x86_64/Packages/php-5.3.3-46.el6_6.x86_64.html)について調べると、CVE-2011-4885は5.3.3-4、CVE-2012-0830は5.3.3-7で対応している。
|
35
|
+
|
36
|
+
### max_input_varsの判定方法の変化について
|
37
|
+
max_input_varsの判定方法は、バージョンによって異なる。
|
38
|
+
|
39
|
+
1. ハッシュの要素数による不完全な方法(php-5.4.0、php-5.3.10以前)
|
40
|
+
```
|
41
|
+
zend_hash_num_elementsを使っており、PostデータにArrayがある場合に、
|
42
|
+
Arrayのサイズがmax_input_vars+1になった際にエラーメッセージを出し、
|
43
|
+
max_input_vars+2以上になると無視する。
|
44
|
+
例)
|
45
|
+
data[100][100][100]のデータは、1000000件になるが、max_input_varsが1000の場合、
|
46
|
+
それぞれのサイズは100なので、制限にかからず、全てのデータを読み込んでしまう。
|
47
|
+
```
|
48
|
+
2. 正確な方法(php-5.6以降 、php-5.5以降、php-5.4.1以降、php-5.3.11以降)
|
49
|
+
[Improved max_input_vars directive to check nested variables](https://github.com/php/php-src/commit/282d3f20349b78eeed0173a2e55d311324faeb4d)というコミットによって修正された。
|
50
|
+
```
|
51
|
+
実際にパースしながら、データの数を数え、データの数がmax_input_varsを超えると、エラーメッセージを出して無視する。
|
52
|
+
```
|
53
|
+
|
1
設定値の書き方を修正した。
answer
CHANGED
@@ -8,11 +8,14 @@
|
|
8
8
|
|
9
9
|
で言及がありますが、PHP 5.3.3-7+squeeze17には、max_input_varsがあるようです。
|
10
10
|
また、[Suhosinモジュール](http://itpro.nikkeibp.co.jp/article/COLUMN/20070214/261900/)には、
|
11
|
+
suhosin.request.max_vars、suhosin.post.max_varsという設定があるようです。
|
12
|
+
90000を指定するのであれば、
|
11
13
|
```
|
12
|
-
suhosin.request.max_vars =
|
14
|
+
suhosin.request.max_vars = 90000
|
13
|
-
suhosin.post.max_vars =
|
15
|
+
suhosin.post.max_vars = 90000
|
14
16
|
```
|
15
|
-
|
17
|
+
のようにすれば良いようです。
|
18
|
+
|
16
19
|
設定の説明は、[ここ](http://suhosin.org/stories/configuration.html)にあります。
|
17
20
|
Suhosinモジュールが適用されているのであれば、
|
18
21
|
この設定により対処できる可能性があります。
|