回答編集履歴
1
コメントに対する回答を追記しました
test
CHANGED
@@ -3,3 +3,35 @@
|
|
3
3
|
|
4
4
|
|
5
5
|
$config['csrf_regenerate'] = TRUE としたい理由は何でしょうか?
|
6
|
+
|
7
|
+
|
8
|
+
|
9
|
+
---
|
10
|
+
|
11
|
+
追記
|
12
|
+
|
13
|
+
|
14
|
+
|
15
|
+
> 今回のようなアプリケーションの場合、regenerateを切っておくのが普通というか、有効にする理由がないのでしょうか。
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
|
20
|
+
|
21
|
+
例えば、以下のドキュメントには次のように書かれています。
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
https://codeigniter.jp/user_guide/3/libraries/security.html
|
26
|
+
|
27
|
+
|
28
|
+
|
29
|
+
> トークンは、すべてのサブミット時に再生成する(デフォルト)か、 CSRF クッキーの生存期間は同一の値で維持するかのどちらかになります。 デフォルトであるトークン再生成はより厳格なセキュリティを提供しますが、 他のトークンが無効になることでユーザビリティの問題をもたらす可能性があります (戻る/進むナビゲーション、複数のタブ/ウィンドウ、非同期アクションなど)。 次の config パラメータを編集することによって、この動作を変更することができます。
|
30
|
+
|
31
|
+
|
32
|
+
|
33
|
+
今回のケースは非同期アクションに該当しますね。つまり、元々$config['csrf_regenerate'] = TRUE が使えないシーンであるわけです。
|
34
|
+
|
35
|
+
それでは、$config['csrf_regenerate'] = TRUE でないとCSRF攻撃にあう可能性が高まるかというと、そんなことはありません。なので、$config['csrf_regenerate'] = TRUE とするために、トリッキーなことをしてしまうと、かえって、その複雑でトリッキーな処理に脆弱性が入る可能性が高くなります。
|
36
|
+
|
37
|
+
アプリケーションは単純に書くほどバグは少なくなるわけで、脆弱性もバグの一種ですから、複雑なことをすると脆弱性も傾向としては増えるのです。
|