2017-08-07 35 views
0

私は、StrutsからSpringへの移行に移行しています。私は最新の春バージョン4.3に取り組んでいるので、私たちはアプリケーションのためにCSRF保護を行うことに決めました。 JSPページでは、springコントローラを呼び出すためのhttp getメソッドでクリック可能な2つのタブがあります。各タブには複数のリンクとボタンがあります。 getコールの後に私がページ上の任意のアクションを実行する場合、たとえば、コントローラへのポストコールを行うボタンをクリックします。 403のメッセージが表示されなくなりました。「予想されるCSRFトークンが見つかりませんでした。あなたのセッションは期限切れですか? 。Spring CSRF HTTP 403禁止エラー

Firefox開発者ツールでは、呼び出しフォームデータを送信していますが、トークンが渡されて_csrfが表示されました。レスポンスヘッダーにx-frame-opitons:Denyと表示されます。私は問題を引き起こしているタブを選択している前のHTTP GETの呼び出しを疑っています。 http GETメソッドにもcsrfトークンを渡す必要がありますか?どんな助け?

+1

あなたが尋ねていることがあまり明確ではないので、いくつかのコードを共有する必要があるかもしれません。まず、いいえ、あなたは確かにGETリクエストでCSRFトークンを送る必要はありませんが、GETリクエストがコントローラによって処理されると、新しいCSRFトークンが生成されます。これはSpring Securityが受け取る予定のものです次のPOST。 GETの後に表示されるページで、引き続きCSRFトークンが表示されますか?更新されていますか? GETの前後で、ブラウザのCSRFトークンに異なる値が表示されるはずです。 – DaveyDaveDave

+0

GET呼び出しの後に同じcsrfトークンを取得しています。実際に私は応答から読むための新しいコードを書いていません。私が使用しているのは、spring mvc タグまたはです。春のドキュメントhttps://stackoverflow.com/questions/26866529/spring-csrf-token-lifeデフォルトでは、csrfトークンライフタイムはセッションベースです。私はここにいくつかのコードを追加しようとします。 – Kiran

答えて

0

私はマイグレーションプロジェクトに取り組んでいたと言いましたが、既存のコールを呼び出すたびに、ユーティリティメソッドの1つでセッション属性を消去しています。私のトークンは、ユーティリティメソッドのセッションクリーニングのために各リクエストでトークンを送信していますが、トークンはnull値と比較されています。したがって、「期待されるCSRFトークンが見つかりませんでした。あなたのセッションは期限切れですか?」というエラーが発生しました。

これで解決しました。ありがとうございました。

関連する問題