web-dev-qa-db-ja.com

GraphQLおよびCSRF保護

私はたくさん読んだ:

  1. https://github.com/pillarjs/understanding-csrf
  2. https://security.stackexchange.com/questions/10227/csrf-with-json-post
  3. JSON WebサービスはCSRF攻撃に対して脆弱ですか?
  4. (ApolloServerサイトには何もありません: https://www.apollographql.com/docs/apollo-server/

ただし、エンドポイント( "/ graphql")がこのタイプの攻撃に対して保護されているかどうか、または次のようなソリューションで保護する必要があるかどうかはまだわかりません: https://github.com/ expressjs/csurf

私には明確ではないことは、ここにあります: https://github.com/pillarjs/understanding-csrf 彼らは言う:

CSRFトークンを誤って使用している場合:...それらをJSONに追加するAJAX呼び出し上記のように、CORSをサポートせず、APIが厳密にJSONである場合は、まったく意味がありません。 AJAX呼び出しにCSRFトークンを追加します。

エンドポイントをContent-Type: application/jsonのみを使用するように制限すると、安全ですか?

7
Fred Hors

エンドポイントをContent-Type:application/jsonのみを使用するように制限すると、安全ですか?

JSONはCSRF攻撃の影響を受けません(ただし、攻撃者には少し追加の作業が必要です)。また、適切に構成されていなければ、GraphQLも影響を受けません。リクエスト/レスポンスに分解すると、CSRFの通常のシナリオがここに適用されます。

  1. VictimはGraphQL Webサービスで認証します。
  2. 攻撃者は悪意のあるリンクを被害者に送信します。
  3. 被害者はリンクをクリックし、攻撃者の悪意のあるWebサイトにアクセスします。
  4. 攻撃者のWebサイトは、被害者のCookieを使用してJSONリクエストを送信します。
  5. Webサービスは有効なセッショントークン/ Cookieを含むJSONリクエストを受信し、機能は被害者が知らないうちに実行します。

このシナリオでは、サービスはCSRFに対して脆弱です。 CORSが信頼できるドメインのホワイトリストからのリクエストのみを許可するように設定されていることを確認し、CSRFトークンが使用されていることを確認してください。複数の保護を実装すると、攻撃が成功するリスクが軽減されます。

次のリンクで詳細を確認し、自分で試すこともできます。 https://blog.appsecco.com/exploiting-csrf-on-json-endpoints-with-flash-and-redirects-681d4ad6b31b =

この回答も関連しています: JSON WebサービスはCSRF攻撃に対して脆弱ですか?

5
SeanD