2016-11-12 9 views
0

資格情報をtext/htmlとして送信すると予想されるログイン認証のためにRESTサービスを使用していて、application/x-www-form-urlencodedコンテンツタイプとして送信すると機能しません。ログイン資格情報をtext/htmlコンテンツタイプとして送信する

テキスト/ *(私はそれと思われます)として送信するのが安全ではありませんか? アプリケーション/ *はどのようにしてより安全になりますか?

RELATED:CAS REST authentication API accepts text/* but not application/* content type

+0

機密情報はHTTP本体ではなくHTTPヘッダーで送信する必要があります。コンテンツタイプに関しては、サービスの設計と実装が重要です。 – ScanQR

答えて

1

これは、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として動作しません)。

関連する問題