これは、CSRF保護の(弱い)の形であるかもしれません。 Javascriptからのクロスドメインコールはapplication/x-www-form-urlencoded
でそのままサーバに送信されるため、攻撃者はAJAXリクエストを送信して攻撃者のドメインからユーザをログインさせることができます。ただし、text/html
のみが受け入れられた場合、クロスドメインの場合は、最初にプリフライトOPTIONS要求がトリガーされ、サーバがCORSヘッダーで明示的に許可していない場合、ブラウザは実際のデータを送信しません。
資格情報を要求するAPIがtext/html
の場合、application/x-www-form-urlencoded
よりも少し安全です。それ以外の場合、セキュリティに大きな影響はありません。
(ただし、コンテンツタイプはサーバーの応答に重要なセキュリティ効果がありますが、JSONデータはHTML形式でエンコードする必要はないため、JSONは単なるデータフォーマットであり、クライアントのJavascriptアプリケーションでも可能ですダウンロードしたデータをレンダリングまたはエンコードする方法を決定しますが、データがJSONでエンコードされていない場合、JSONデータ "page"、つまりJSON文字列自体はtext/html
として送信されるとXSSに対して脆弱です。 htmlはJavascriptを内部で実行しているので、JSONレスポンスは常にapplication/json
でなければなりません。この場合、ブラウザはJavascriptとして動作しません)。
機密情報はHTTP本体ではなくHTTPヘッダーで送信する必要があります。コンテンツタイプに関しては、サービスの設計と実装が重要です。 – ScanQR