回答編集履歴
3
常体を敬体に変更した。
test
CHANGED
@@ -44,33 +44,35 @@
|
|
44
44
|
|
45
45
|
### max_input_varsが使用できるバージョンについて
|
46
46
|
|
47
|
-
正式なリリースとしては、[ドキュメント](http://php.net/manual/ja/info.configuration.php)にもある通り、5.3.9以降で使用でき
|
47
|
+
正式なリリースとしては、[ドキュメント](http://php.net/manual/ja/info.configuration.php)にもある通り、5.3.9以降で使用できますが、
|
48
48
|
|
49
|
-
後述する通り、セキュリティ的な面で5.3.11以降、5.4.1以降の方が望ましい。
|
49
|
+
後述する通り、セキュリティ的な面で5.3.11以降、5.4.1以降の方が望ましいと思います。
|
50
50
|
|
51
51
|
|
52
52
|
|
53
53
|
正式なリリースとは別に、max_input_varsはセキュリティ的な問題([CVE-2011-4885](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2011-4885))の対処のため、
|
54
54
|
|
55
|
-
パッチが存在し、rpmなどでは、パッチを含むバージョンがリリースされてい
|
55
|
+
パッチが存在し、rpmなどでは、パッチを含むバージョンがリリースされています。
|
56
56
|
|
57
57
|
なお、使用する際は、このパッチによって入り込んだ[CVE-2012-0830](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2012-0830)も対処されたバージョンが
|
58
58
|
|
59
|
-
望ましいと考えられ
|
59
|
+
望ましいと考えられます。
|
60
60
|
|
61
|
-
ちなみに、正式なリリースでCVE-2012-0830が修正されたのは、[このコミット](https://github.com/php/php-src/commit/40d8cd1f122873af7e21dfe4cad24702c4be48f9#diff-28ccb3aa37e01a68f5510ad6de4ab738)によると考えられ
|
61
|
+
ちなみに、正式なリリースでCVE-2012-0830が修正されたのは、[このコミット](https://github.com/php/php-src/commit/40d8cd1f122873af7e21dfe4cad24702c4be48f9#diff-28ccb3aa37e01a68f5510ad6de4ab738)によると考えられますが、
|
62
62
|
|
63
|
-
これはphp-5.3.11、php-5.4.1でリリースされてい
|
63
|
+
これはphp-5.3.11、php-5.4.1でリリースされています。
|
64
64
|
|
65
65
|
|
66
66
|
|
67
|
-
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は
|
67
|
+
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は
|
68
|
+
|
69
|
+
5.3.3-7で対応しています。
|
68
70
|
|
69
71
|
|
70
72
|
|
71
73
|
### max_input_varsの判定方法の変化について
|
72
74
|
|
73
|
-
max_input_varsの判定方法は、バージョンによって異な
|
75
|
+
max_input_varsの判定方法は、バージョンによって異なります。
|
74
76
|
|
75
77
|
|
76
78
|
|
@@ -82,23 +84,25 @@
|
|
82
84
|
|
83
85
|
Arrayのサイズがmax_input_vars+1になった際にエラーメッセージを出し、
|
84
86
|
|
85
|
-
max_input_vars+2以上になると無視す
|
87
|
+
max_input_vars+2以上になると無視します。
|
86
88
|
|
87
89
|
例)
|
88
90
|
|
89
|
-
data[100][100][100]のデータは、1000000件にな
|
91
|
+
data[100][100][100]のデータは、1000000件になりますが、max_input_varsが1000の場合、
|
90
92
|
|
91
|
-
それぞれのサイズは100なので、制限にかからず、全てのデータを読み込んでしま
|
93
|
+
それぞれのサイズは100なので、制限にかからず、全てのデータを読み込んでしまいます。
|
92
94
|
|
93
95
|
```
|
94
96
|
|
95
97
|
2. 正確な方法(php-5.6以降 、php-5.5以降、php-5.4.1以降、php-5.3.11以降)
|
96
98
|
|
97
|
-
[Improved max_input_vars directive to check nested variables](https://github.com/php/php-src/commit/282d3f20349b78eeed0173a2e55d311324faeb4d)というコミットによって修正された。
|
99
|
+
[Improved max_input_vars directive to check nested variables](https://github.com/php/php-src/commit/282d3f20349b78eeed0173a2e55d311324faeb4d)というコミットによって修正されました。
|
98
100
|
|
99
101
|
```
|
100
102
|
|
101
|
-
実際にパースしながら、データの数を数え、データの数がmax_input_varsを超えると、
|
103
|
+
実際にパースしながら、データの数を数え、データの数がmax_input_varsを超えると、
|
104
|
+
|
105
|
+
エラーメッセージを出して無視します。
|
102
106
|
|
103
107
|
```
|
104
108
|
|
2
max_input_varsについて追記した。
test
CHANGED
@@ -39,3 +39,69 @@
|
|
39
39
|
Suhosinモジュールが適用されているのであれば、
|
40
40
|
|
41
41
|
この設定により対処できる可能性があります。
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
### max_input_varsが使用できるバージョンについて
|
46
|
+
|
47
|
+
正式なリリースとしては、[ドキュメント](http://php.net/manual/ja/info.configuration.php)にもある通り、5.3.9以降で使用できるが、
|
48
|
+
|
49
|
+
後述する通り、セキュリティ的な面で5.3.11以降、5.4.1以降の方が望ましい。
|
50
|
+
|
51
|
+
|
52
|
+
|
53
|
+
正式なリリースとは別に、max_input_varsはセキュリティ的な問題([CVE-2011-4885](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2011-4885))の対処のため、
|
54
|
+
|
55
|
+
パッチが存在し、rpmなどでは、パッチを含むバージョンがリリースされている。
|
56
|
+
|
57
|
+
なお、使用する際は、このパッチによって入り込んだ[CVE-2012-0830](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2012-0830)も対処されたバージョンが
|
58
|
+
|
59
|
+
望ましいと考えられる。
|
60
|
+
|
61
|
+
ちなみに、正式なリリースでCVE-2012-0830が修正されたのは、[このコミット](https://github.com/php/php-src/commit/40d8cd1f122873af7e21dfe4cad24702c4be48f9#diff-28ccb3aa37e01a68f5510ad6de4ab738)によると考えられるが、
|
62
|
+
|
63
|
+
これはphp-5.3.11、php-5.4.1でリリースされている。
|
64
|
+
|
65
|
+
|
66
|
+
|
67
|
+
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で対応している。
|
68
|
+
|
69
|
+
|
70
|
+
|
71
|
+
### max_input_varsの判定方法の変化について
|
72
|
+
|
73
|
+
max_input_varsの判定方法は、バージョンによって異なる。
|
74
|
+
|
75
|
+
|
76
|
+
|
77
|
+
1. ハッシュの要素数による不完全な方法(php-5.4.0、php-5.3.10以前)
|
78
|
+
|
79
|
+
```
|
80
|
+
|
81
|
+
zend_hash_num_elementsを使っており、PostデータにArrayがある場合に、
|
82
|
+
|
83
|
+
Arrayのサイズがmax_input_vars+1になった際にエラーメッセージを出し、
|
84
|
+
|
85
|
+
max_input_vars+2以上になると無視する。
|
86
|
+
|
87
|
+
例)
|
88
|
+
|
89
|
+
data[100][100][100]のデータは、1000000件になるが、max_input_varsが1000の場合、
|
90
|
+
|
91
|
+
それぞれのサイズは100なので、制限にかからず、全てのデータを読み込んでしまう。
|
92
|
+
|
93
|
+
```
|
94
|
+
|
95
|
+
2. 正確な方法(php-5.6以降 、php-5.5以降、php-5.4.1以降、php-5.3.11以降)
|
96
|
+
|
97
|
+
[Improved max_input_vars directive to check nested variables](https://github.com/php/php-src/commit/282d3f20349b78eeed0173a2e55d311324faeb4d)というコミットによって修正された。
|
98
|
+
|
99
|
+
```
|
100
|
+
|
101
|
+
実際にパースしながら、データの数を数え、データの数がmax_input_varsを超えると、エラーメッセージを出して無視する。
|
102
|
+
|
103
|
+
```
|
104
|
+
|
105
|
+
|
106
|
+
|
107
|
+
|
1
設定値の書き方を修正した。
test
CHANGED
@@ -18,15 +18,21 @@
|
|
18
18
|
|
19
19
|
また、[Suhosinモジュール](http://itpro.nikkeibp.co.jp/article/COLUMN/20070214/261900/)には、
|
20
20
|
|
21
|
-
|
21
|
+
suhosin.request.max_vars、suhosin.post.max_varsという設定があるようです。
|
22
22
|
|
23
|
-
suhosin.request.max_vars = 3000
|
24
|
-
|
25
|
-
|
23
|
+
90000を指定するのであれば、
|
26
24
|
|
27
25
|
```
|
28
26
|
|
27
|
+
suhosin.request.max_vars = 90000
|
28
|
+
|
29
|
+
suhosin.post.max_vars = 90000
|
30
|
+
|
31
|
+
```
|
32
|
+
|
29
|
-
|
33
|
+
のようにすれば良いようです。
|
34
|
+
|
35
|
+
|
30
36
|
|
31
37
|
設定の説明は、[ここ](http://suhosin.org/stories/configuration.html)にあります。
|
32
38
|
|