web-dev-qa-db-ja.com

HttpOnlyとSecure Cookieは、レストAPIでCSRFを防ぐのに十分ですか?

Springを使用してRESTful APIを1つ作成しました。ログイン応答で秘密鍵をHttpOnly&Secure cookieとして送信しています。ログイン後、すべての残りのリクエストはそのCookieを確認し、毎回更新します。

私のWebサイトがCSRFに対して脆弱である可能性はありますか? Spring MVCとApache 2.4を使用しています

4
Paresh Dudhat

まず、CSRFとXSRFはどちらもクロスサイトリクエストフォージェリを参照します。

2番目に、抗CSRFトークンをCookieに入れない限り、少なくともHttpOnly属性を可能であれば設定する必要があります。

HttpOnly属性を設定できない状況があります。たとえば、Cookie(AngularJS)の値を読み取ることができる必要があるJavaScriptコードを使用する場合です。

REST APIをHTTPS経由で提供する場合は、CSRF防止CookieのSecure属性も設定する必要があります。

これ [〜#〜] url [〜#〜] は、Spring MVCフレームワークでの反CSRFトークンの使用および設定方法を説明しています。

これ [〜#〜] url [〜#〜] は、PHPでPHPを使用せずに、CSRFトークンを使用する方法を説明しています=フレームワーク。

攻撃者がHttpOnly Cookieを盗むことができる状況があります。

  1. HTTP TRACEメソッドが有効になっている
  2. 古いApache( CVE-2012-005 )(<v2.2.22)

説明に基づいてこれら2つの条件が満たされない場合、特にリクエストベースの抗CSRFトークンを使用しているため、コードはCSRF攻撃から十分に保護されていると言えます(これを行わない銀行も知っています)。よくやった! :)

ただし、ホイールを再発明しようとしないでください。個人的には、Spring MVEフレームワークを使用して適切なCSRF保護を実装しようとしています。

1
Jeroen