はCSRF
codeigniter
での攻撃ではなく、すべてのページから一部の敏感なフォームを保護するためにある一部のページのみにCSRFの保護を使用しています。CodeIgniterのは、私が何をしたいのか
私はそれがすべてのページに適用さconfig.phpの中でそれを設定している場合CSRF
から保護します。コントローラーで設定することによって、いくつかのページでのみこれを行う方法はありますか?
$config['csrf_protection'] = TRUE;
はCSRF
codeigniter
での攻撃ではなく、すべてのページから一部の敏感なフォームを保護するためにある一部のページのみにCSRFの保護を使用しています。CodeIgniterのは、私が何をしたいのか
私はそれがすべてのページに適用さconfig.phpの中でそれを設定している場合CSRF
から保護します。コントローラーで設定することによって、いくつかのページでのみこれを行う方法はありますか?
$config['csrf_protection'] = TRUE;
CI3がこの機能を持っている今、私たちはあなたがconfig.php
ファイル
$config['csrf_protection'] = FALSE;
ステップ1を編集することによってこれを行うことができます設定で http://www.codeigniter.com/userguide3/libraries/security.html?highlight=csrf#cross-site-request-forgery-csrf
$config['csrf_exclude_uris'] = array('api/person/add');
$config['csrf_exclude_uris'] = array(
'api/record/[0-9]+',
'api/title/[a-z]+'
);
を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()関数を使用するにこれを追加します。
デフォルトはtrueで、私は私のAjaxのページのためにそれを無効にするように、私は他の方法で回避の代わりとも$の設定[「csrf_regenerate」]のためにこれを使用していました。これは、CSRFを無効にすることはよくないですが、回生をオフにする作業を修正です。 – qwertzman
この機能を使用すると、CIのバージョン2.xを使用している場合は、この答えを見て、それを試してみて、CI 3.0-DEVで実装されていますhttp://stackoverflow.com/a/15860653/1725764 –
@HashemQolamiありがとうございます。受け入れる答えとして残してください。正確な答えを装っ – esrpim
私見では、それは重複コンテンツになるだろう、良い御馳走ではありません。私は参照として残るべきである同様の質問のリンクを掲示した。 –