web-dev-qa-db-ja.com

WebサービスのOWASPセキュアヘッダー

POSTリクエストを処理し、SOAPを使用してデータを返すWebサービスでは、次のヘッダーは必須ですか?

  • HTTP Strict Transport Security(HSTS)
  • X-Frame-Options
  • X-XSS保護
  • X-Content-Type-Options
  • コンテンツセキュリティポリシー

これらのヘッダーがWebアプリケーションに役立つことを知っています。しかし、これらのヘッダーはHTTPでも処理されるため、Webサービスでこれらのヘッダーを使用する必要性について知りたいのですが?

5
Mohammed Farhan

質問の重要な部分は、それがAPIであり、Webアプリケーションではないということです。 XMLを返すAPIのセキュリティニーズは、HTML、JSなどの組み合わせを返すwebbアプリケーションのセキュリティニーズとは大きく異なります。

それでは、APIの観点から、ヘッダーを1つずつ見ていきましょう。

  • HTTP Strict Transport Security(HSTS)
    HSTSは一般的に奨励されるべき良いものです。 SSLストリップ攻撃を防ぎます。しかし、これらはユーザーがブラウザーのURLバーに(プロトコルなしで)URLを入力した場合にのみ可能です。これは(通常)SOAP APIを使用する方法ではありません。したがって、すべてのURLがHTTPSでハードコーディングされている場合、HSTSの利点はわずかです。

  • X-Frame-Options
    これは、ページをフレームに表示できるかどうかを制御します。クリックジャッキングなどの攻撃を防ぐ方法として意図されています。これは、APIの問題ではありません(XMLをフレームにロードする理由)誰にとっても有益である...)ので、問題ではありません。

  • X-XSS-Protection
    XMLを返す場合(SOAP APIが行うように)、JSの実行がないため、XSSは実際には問題ではないので、このヘッダーは役に立ちません。ただし、インジェクション攻撃について考える必要がないという意味ではありません。)

  • X-Content-Type-Options
    これは、主にユーザーがアップロードしたファイルを提供するときに問題となるMIMEタイプのスニッフィングを防止するために使用されます。これは通常APIが行うことではないので、これも心配する必要はありません。

  • コンテンツ-セキュリティ-ポリシー
    これは、HTMLドキュメントに含めることができるものとできないものを設定します。関心のないXMLを提供している場合。繰り返しますが、適用されません。

こちらのパターンをご覧ください。ほとんどのヘッダー(HSTSを除く)は、APIには実際には適用されません。ヘッダーが対抗する脅威はAPIに関連しないためです。

3
Anders

これらのヘッダーにはすべて長所があります。それらのいくつかは同様に彼らの短所を持っています。 TL; DR:HSTSおよびX-Content-Type-Optionsを使用します。

長いバージョン:通常、特にリスト内の2つの標準は重要です。これらは「HSTS」と「CSP」です。 Xで始まるすべてのものは、実際には標準ではありません。それは便利です。天気を確認するには、特定の環境でそれを使用するか、ウェブサイトを試してみるか 使用できます

とにかく。 HSTSヘッダーは、「最初の使用時の信頼」の原則としてHTTPSの使用を強制します。そのため、サイトに初めてアクセスした後、ブラウザによって一部の情報が保存されます。ユーザーが「http」と入力しても、クライアント(ブラウザ)はHTTPSを強制します。真ん中の男の攻撃はそれよりずっと難しいでしょう。

「コンテンツセキュリティポリシー」(正しく使用した場合)は、スクリプトが* .js-filesからのみ実行されることを強制します。さらに、ページからのみロードするようブラウザに指示することもできます(すべきです)。あなたはHTMLを提供しないので、これは本当に私のPOVからあなたを助けません。

X-XSS-Protectionについても同様です。

これらは害を及ぼすことはありませんが、実際には役に立ちません。

X-Content-Type-Optionsに関しては、MDNはこう言っています:

X-Content-Type-Options応答HTTPヘッダーは、サーバーが使用するマーカーであり、Content-TypeヘッダーでアドバタイズされたMIMEタイプを変更して従わないことを示します。これにより、MIMEタイプのスニッフィングをオプトアウトできます。つまり、Webマスターが何をしていたかを知っていたと言えます。

これはあなたには必要ないかもしれませんし、私は実際にユースケースを見ることはありませんが、あなたのコンテンツタイプは常にいくつかのSOAPyのものなので、それを使用することで実際に苦しむことはありません。

私の経験から、HSTSは誰もが使うべき標準です。 TLSを使用しないHTTPは本当に時代遅れであり、HSTSを使用しないHTTPSは安全性がはるかに劣ります。したがって、私のすべてのプロジェクトでHSTSは必須であると考えています。ちょうど最後の警告:プリロードについて考えるときは注意してください。後で何かを変更するオプションが本当に制限されることを。

3
Ben