2016-09-13 1 views
0

Symfony RESTプロジェクトでCSRFの実装に問題があります。私はAngularJSを使用しており、AuthTokenのクッキーはNG $cookieサービスを使用して保存され、X-Auth-Token headerのすべてのリクエストでサーバーに送信されますが、実際にはCSRFの保護を実装する必要がありますか? その他の質問、答えが「はい」だった場合、どうすればSymfonyでそれを行うことができますか? RESTfulではないサーバーセッションでトークンを格納するため、のようなシステムを実装するにはどのような方法が良いですか?私の悪い英語のために、感謝!Rest APIのCSRF保護

+1

CSRFトークンを使用すると、セッションが開いている間にスケッチのないスクリプトやページがサイトに要求を送信できないようにするため、CSRFトークンを使用して自分が誰であるかを証明します。あなたのアプリケーションにトークンを格納しておき、それをすべてのリクエストで送信する場合は、あなたがあなたの認証トークンを使っていることを証明しているときにCSRFを使う必要はありません。 – qooplmao

答えて

1

基本的には、(自分のアプリケーションからの)攻撃者があなたのユーザーが誤ってサーバーの状態を変更するアプリケーションに有効な要求を発行することができたときにCSRFの保護を必要とする。

要するにクッキーベースの認証では、GET以外のリクエスト(GETが変更しない限り、そうではないはずはない)を意味します。これは、req他のウェブサイトから作成されました。

ヘッダーにアクセストークン(認証用)がある場合は、Angularアプリでリクエストに追加する必要があります。攻撃者はこれを実行できないため、CSRF保護は必要ありません。

トークンがクッキーとして送信されるトークンベースの認証の場合は、CSRF保護が必要です。これは、基本的には、この点で明白なクッキー認証と同じです。

0

あなたのケースで最も簡単なのは、このバンドルhttps://github.com/dunglas/DunglasAngularCsrfBundleを使用してユースケースを処理することです。

基本的にはどのように動作します:角度アプリはクッキーを読み取り、設定

  • サーバアプリはXSRF-TOKENを偽造し、セッションに格納し、角アプリ
  • にクッキーとして送信セッションに格納された将来の
  • 要求サーバーは、トークンの値が(リクエスト・リスナーを使用して)各リクエストにX-XSRF- TOKENを比較するためのX-XSRF-TOKENは、

トークンD場合一致しない場合、リクエストは失敗します。