Symfony2.1を使用してログインフォームのCSRF保護がうまく機能していないようです。
config.ymlでは、csrf_protectionがtrueに設定されています。ログインフォームは、'form[_token]']という名前の非表示の入力をレンダリングしています。security.yml内:
csrf_parameter: form[_token]
intention: authenticate
この設定で、問題なくログインできます。しかし、CSRFトークンはチェックされていません。フォームを送信する前に、非表示の入力フィールドを削除してこれを確認しました。
<input type="hidden" id="form__token" name="form[_token]" value="9b2f5d5efabb938ff8d83c2c8318db1377a3ef16">
csrf_provider構成設定をsecurity.ymlに追加すると、ログインできなくなり、「InvalidCSRFtoken」というエラーが発生します。
csrf_provider: form.csrf_provider
私はこのトピックで見つけたものをすべて読みましたが、何も正しく機能していないようです-この記事で読んだものを除いて:http://henrik.bjrnskov.dk/symfony2-cross-site-request-forgery/。そのようなものはFriendsofSymfonyに引き込まれたようです:https ://github.com/FriendsOfSymfony/FOSUserBundle/pull/469 、私は使用していません。
投稿では、次のように指示されています。
loginActionで手動でトークンを生成します。
$ csrfToken = $ this-> container-> get('form.csrf_provider')-> generateCsrfToken('authentication');
ビューに送信します
フォームに手動でレンダリングします
これは迷惑です。
質問は基本的に次のようになります-構成設定のみを使用するログインフォームに対してCSRF保護がSymfony2.1で機能する必要がありますか、それとも機能させるためにloginActionとテンプレートを変更する必要がありますか?