質問編集履歴

1

2015/02/20 04:00

投稿

oya2
oya2

スコア42

test CHANGED
File without changes
test CHANGED
@@ -1,37 +1,17 @@
1
1
  CodeIgniterには、各要求に対して自動的にGET/POST/COOKIEの配列キーをフィルターし、危険そうなアプリケーションは作動を停止するような関数があります。
2
-
3
-
4
2
 
5
3
  ユーザーが悪意を持ってインプットキーを利用するのを防ぐため、キーはアルファベットと数字を組み合わせたものでのみ書かれていることを確かめる必要があります。
6
4
 
7
-
8
-
9
5
  例えば、このような書き方をします。
10
6
 
11
-
12
-
13
- ```lang-<ここに言語を入力>
14
-
15
7
  // 各GET/POST/COOKIEキーを$strとする
16
-
17
8
  if ( ! preg_match(""/^[a-z0-9:_\/-]+$/i"", $str))
18
-
19
9
  {
20
-
21
- exit('無効な字が含まれています。');
10
+ exit('無効な字が含まれています。');
22
-
23
11
  }
24
12
 
25
- ```
26
-
27
-
28
-
29
13
  こうしておくと、例えば<input name=""TE$T"">や?name|first=1のようなクエリ文字列を間違えてポストしてしまったときに、エラーとして知らせてくれます。
30
-
31
14
  こうしておけば、アプリケーションを開発している間、簡単なキーの名前をつけるのを防いだり、間違いに気付くことができると思います。
32
15
 
33
-
34
-
35
16
  しかし、どのような場合にユーザーは悪意で$_POSTのキーを利用することがあるのでしょうか。
36
-
37
17
  インプット値も利用しやすいと思うのですが、 なぜこれではなくキーを利用するのでしょうか。