2011-08-09 11 views
2

:私はCodeIgniterのフォームのみを使用していますCodeIgniterのCSRF保護エラー:私は、configファイルにCSRFの保護を有効にしているCI 2を使用しています

$config['csrf_protection'] = TRUE; 
$config['csrf_token_name'] = 'sitename'; 
$config['csrf_cookie_name'] = 'sitename'; 
$config['csrf_expire']  = 7200; 

。場合によっては、フォームまたはログインを送信することで、「このアクションを実行する権限がありません」というエラーが表示されることがあります。

私がリフレッシュしてもう一度試してみると、すべてのものがうまく動作します。なぜこうなった?

+0

まあ、それはあなたがフォームを送信する前に7200seconds以上にかかっているかもしれませんか...? また、Ajaxを使用してフォームを送信していますか?私はコードイグナイタでajaxフォームとcsrfを扱う際に問題が発生しています...それは私があなたの質問にどうやって着いたかです::) – Piero

+0

問題は本当にCSRFクッキーが期限切れになっているためです。 AJAXを使用しているときには回避するのは難しくありませんが、ユーザーがいなくなったばかりのときは少し苦労します。 –

答えて

1

CSRFトークンの有効期限が切れ、適切なプロセスが終了し、CSRFトークンの有効期限が7200秒から必要以上のもの(7200/60/60 = 2時間)に増加するためです。

はCSRFは、ここであなたのために何をするかについて、もう少しアップ読む
http://en.wikipedia.org/wiki/Cross-site_request_forgery

2

あなたは彼のセッションを拡張するためにユーザーを求めて、時間の期限切れクッキー時にトリガJS確認ボックスを作ることができます。私はCSRFを使い続けたいと思うなら、それが最もエレガントなソリューションだと思います。

0

トークンが期限切れになったために発生します。コアセキュリティクラスを拡張してページを自動的に更新することができます。

Check the solution here

関連する問題