0

Codeigniter http://ulogin.ru/constructor.htmlの認可モジュール uLogin を設定します

ただし、"The action you have requested is not allowed."CSRF 保護を有効にするとエラー ( ) が発生します。

保護がオフになっている場合、すべてが正常に機能します。

保護が有効になっている場合、ログ記録と自動更新の後、現在のページは失敗します。

どうやら不一致が原因でトークンが渡されました。この問題を解決するには?

4

2 に答える 2

1

CodeIgniter CSRF には、問題を引き起こしている可能性のある設定があります。/config/config.php では、設定$config['csrf_expire']によって CSRF Coo​​kie の有効期間が決まります。たとえば、その設定が 300 (5 分) で、ログイン ページを更新した後、10 分間サインインを試行しなかった場合"The action you have requested is not allowed."、CSRF Coo​​kie の有効期限が 5 分前に切れているため、エラーが発生します。

基本的に、このエラーは CodeIgniter CSRF Coo​​kie の有効期限が切れていることが原因である可能性があります。その Cookie はページが読み込まれるときに設定されるため、フォームを含むページが設定よりも長くそこにある場合は$config['csrf_expire']、フォームを送信する前にページを更新する必要があります。そうしないと、そのエラーが発生します。エラーが頻繁に発生しないようにするには、 のサイズを大きくしてみてください$config['csrf_expire']

また、CodeIgniterフォーム ヘルパーを使用すると、非表示の CSRF 入力が自動的に生成されます。

于 2012-12-20T16:13:34.390 に答える
0

リンクされた「モジュール」には詳しくありませんが、次のように、CSRF 検証データを含む隠しフィールドをログイン フォームに追加する必要があります。

<input type="hidden"
    name="<?=$this->security->get_csrf_token_name();?>"
    value="<?=$this->security->get_csrf_hash();?>"
/>
于 2012-12-18T09:39:51.070 に答える