2013-08-22 10 views
5

CSRFcodeigniterでの攻撃ではなく、すべてのページから一部の敏感なフォームを保護するためにある一部のページのみにCSRFの保護を使用しています。CodeIgniterのは、私が何をしたいのか

私はそれがすべてのページに適用さconfig.phpの中でそれを設定している場合CSRFから保護します。コントローラーで設定することによって、いくつかのページでのみこれを行う方法はありますか?

$config['csrf_protection'] = TRUE; 
+3

この機能を使用すると、CIのバージョン2.xを使用している場合は、この答えを見て、それを試してみて、CI 3.0-DEVで実装されていますhttp://stackoverflow.com/a/15860653/1725764 –

+0

@HashemQolamiありがとうございます。受け入れる答えとして残してください。正確な答えを装っ – esrpim

+0

私見では、それは重複コンテンツになるだろう、良い御馳走ではありません。私は参照として残るべきである同様の質問のリンクを掲示した。 –

答えて

7

をURIを除外することができます。保護したいページの配列を作成

例えば、

$csrf_pages = array('login','test');

ステップ2:保護されたページへの要求があるかどうかを確認後、TRUEに設定します。

if (isset($_SERVER["REQUEST_URI"])) { 
    foreach ($csrf_pages as $csrf_page){ 
     if(stripos($_SERVER["REQUEST_URI"],$csrf_page) !== FALSE) { 
      $config['csrf_protection'] = TRUE; 
      break; 
     } 
    } 

} 

ステップ3:あなたの意見

<input type="hidden" name="<?php echo $this->security->get_csrf_token_name(); ?>" value="<?php echo $this->security->get_csrf_hash();?>" /> 

それとも単に自動的に隠されたCSRFトークンのフィールドを追加するFORM_OPEN()関数を使用するにこれを追加します。

+0

デフォルトはtrueで、私は私のAjaxのページのためにそれを無効にするように、私は他の方法で回避の代わりとも$の設定[「csrf_regenerate」]のためにこれを使用していました。これは、CSRFを無効にすることはよくないですが、回生をオフにする作業を修正です。 – qwertzman

関連する問題