web-dev-qa-db-ja.com

GETおよびPOSTリクエストはCSRF攻撃に対して脆弱ですか?

GETとPOSTリクエストの両方がCSRFに対して脆弱ですか?代わりにPUTを使用する必要がありますか?

9
Ngoc Huynh

はい、GETとPOSTはどちらもCSRFに対して脆弱です。

ただし、 RFC 7231 の状態

gETメソッドとHEADメソッドには、取得以外のアクションを実行することの重要性はありません。これらのメソッドは「安全」であると見なされるべきです。

したがって、Webサイトが標準に準拠し、「安全でない」アクションのみをPOSTとして実装している場合、ここでのみPOSTリクエストは脆弱です。しかし、多くのWebサイトはすべての「安全でない」アクション-たとえば、ログアウト機能は見過ごされがちです。

COTSがなくてもPUTは安全です ですが、ここでは適切な方法ではありません。 CSRF保護を実装している場合、XHRリクエストを保護するための良い方法は X-Requested-With をリクエストに追加し、このヘッダーサーバー側を検証します。これをサーバー側でチェックされるランダムな値と組み合わせて、誤ってヘッダーを許可する脆弱性を含むFlashなどのブラウザープラグインの場合に保護を追加できます。 this answer および this one を参照してください。

10
SilverlightFox

メソッド。つまり、データの送信のput、post、delete、request、getなどは関係ありません。 CSRF(Cross Site Request Forgery)攻撃により、信頼されていないコンテンツがWebサーバーによって挿入および処理される可能性があります。

1
jas-