2016-11-20 24 views
4

webappのコンポーネントは、SPA(多かれ少なかれ)です。つまりjavascriptを使用して実行され、ページビューやリフレッシュを生成しません。これにより、CSRFトークンが古くなる可能性があります。特に携帯電話ユーザーの場合、ブラウザを切り替えて数日後/週後に開く可能性があります。このSPAは、場合によってはサーバーへのPOST更新を必要とします。XHRのCSRF保護をバイパスすることは安全ですか? (Rails)

CSRFの保護に関する警告とともに、422エラーを生成するjavascript POSTリクエストがいくつか表示されます。私は、CSRFトークンが存在することは確かですが、古くなっています。私はその周りに最善の方法を見つけることを試みている。

私が正しく理解し、OWASP CSRF Cheat Sheetによれば、CORSが同じエンドポイントで開いていない限り、XHR要求は安全でなければなりません。つまり、悪意のあるサイトはjavascriptなしでXHRヘッダーを要求することはできません。また、javascriptを使用すると、クロスオリジンであるためリクエストをブロックする必要があります。

唯一のリソースI foundには、jsonに対してCSRF保護が無効になっている、かなり混乱して書かれた例がありました。それを勧めているのか、それとも避けているのかは分からない。

CORSが有効になっていないレールでXHR/json要求のCSRF保護をオフにするのは安全かどうかですか?

+0

Railsのドキュメントを更新するためにPRを作成しました。 https://github.com/rails/rails/pull/31640を参照してください。 – gingerlime

答えて

0

短い答えはですが、CORSには注意が必要です。

ここではドキュメントからの抜粋ですが、レールにI suggestedを変更します。

XHRリクエストのみが行うことができるので、(コードスニペットは、上記しのような)CSRF保護 からXHRリクエストを除外するために一般的に安全です から同じ起源。ただし、クロスオリジンの第三者ドメイン は、CORS で許可され、XHRリクエストを作成することもできます。 XHRの偽造防止を無効にする前に、 CORSホワイトリストを確認してください。

これについて、私はまだレールチームからのフィードバックはありませんでした。

関連する問題