質問するログイン新規登録

回答編集履歴

1

コメントに対する回答を追記しました

2018/09/02 09:15

投稿

ockeghem
ockeghem

スコア11710

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