2016-03-23 11 views
0

OWASAPメカニズムを使用してレガシーアプリケーションフォームCSRFを保護しようとしましたが、ナビゲーションと戻るボタンに問題があります。私はstruts-1トークンメカニズムを使ってみましたが、同じ問題に直面しました。私がトークン注入機構で考える問題は、最初はjspでトークンを生成し、それをセッションに格納して何らかのアクションを実行することです。ブラウザ戻るボタンCSRF防止機構の問題

A.jspを検討してください。 jspのトークン値1を取ることができ、セッションに同じ値を格納します。 これでフィルタ/アクションクラスで検証されます。 その後、私たちはB.jspでいくつかの操作を行い、jspとセッションで新しいトークン2をトークンにします。検証フォームサーバーの後に、セッションで値2を持ちます。 ブラウザの戻るボタンを使用してページ1に移動して送信すると、キャッシュから値がロードされ、A.jspの値がトークン1の になります。この時点でA.jspを送信すると、セッションの値と矛盾するCSRFエラー。

実際にアプリケーションを妨害することなくCSRF防止メカニズムを実装する方法はありますか?

答えて

0

あなたの問題を正しく理解している場合、戻るボタンを押すと古いトークンを持つキャッシュからページが取得されますか?私が正しいとすれば、この問題を解決する簡単な方法があります。ページをキャッシュしておかないで、いつもサーバーからロードしてください。それは、以下のレスポンスヘッダに

Cache-Control: max-age=0, no-cache, must-revalidate 

その他、より困難な方法を設定することによって達成することができ

、その場合には、必ずブラウザのメモリに実際のトークンを持っています、単一ページのアプリケーションを実装することです。

+0

私は応答ヘッダーを使用して実装しようとしました。フローを破っているので役に立たなかった。従来のアプリにSPAを実装するには、十分な時間が必要です。今は持っていません。実際に機能を損なうことなく、CSRFからWebアプリケーションを保護する他の方法はありますか? – Girish

+0

CSRFからあなたのサイトを保護するセキュリティトークンの方法は他にありません。トークンは一回限りではなく、合理的な時間内にトークンを発行することができます。 –

+1

Actionクラスのカスタムヘッダーを設定するカスタムヘッダーを使用してリファラーヘッダーやその他のメソッドをチェックするのはどれだけ良いですか?jspに渡した後、同じ値をjavascriptを使用して設定し、同じ。このCookie-to-Header Tokenメソッドはどれくらい安全ですか? – Girish

関連する問題