web-dev-qa-db-ja.com

HTTPSにリダイレクトされるHTTP経由の基本認証-リークしますか?

Flask APIを作成していますが、HTTPからHTTPSへのリダイレクト、またはHSTSヘッダーが以前に送信されたときにHTTPを要求する場合に存在する攻撃面については、少し不慣れです。

ユーザーがルートを要求するとしますuser@pass:<url>/ping HTTP経由。次のいずれかになります。

  • HTTPSにリダイレクトされます。必ずしもHTTPリクエストが常にリダイレクトされることに気づくわけではありません。つまり、リダイレクトを続けることができます。
  • ブロックされました。 HTTPへのすべての試みは、ある種の「禁止された」応答で提供されます。彼らはエンドポイントにアクセスできないので気づくでしょうが、送信されたデータはまだ明らかにされていると思います。

ユーザーがHTTP経由で基本認証ヘッダーを含む要求を送信し、それが書き換えとしてまたはHSTSを使用してHTTPSにリダイレクトされる場合、情報はまだ明らかにされていませんか?

もしそうなら、HTTPをブロックすることは、ユーザーにHTTPルートのリクエストを停止するように伝えるより効果的な方法になると思います。リダイレクトによって、最初のリクエストでHTTPの使用が実際に停止することは決してありません。

送信されるデータのセキュリティを維持するリダイレクトのいくつかの機能を誤解しているかもしれません...?

3
TragedyStruck

ユーザーがHTTP経由で基本認証ヘッダーを含むリクエストを送信し、それが書き換えとしてまたはHSTSを使用してHTTPSにリダイレクトされた場合、情報はまだ明らかにされていませんか?

リクエストがHTTPSにリダイレクトされる場合(30x応答とLocationヘッダーを使用)、認証情報は既に有線でプレーンテキストで送信されています。

HSTSが有効になっている場合、HTTP接続は行われず、認証資格情報はHTTPS経由ですぐに送信されます。これは、Strict Transport SecurityがブラウザにHTTPS経由で直接接続するように指示するためです。

HSTSは最初に使用するときに信頼され、有効期限が切れることがあるため、完全な防水保護ではないことに注意してください。

3
Sjoerd

データが最初に送信されるURL /宛先がHTTPの場合、それはbase64形式で公開されます(基本認証が使用するもの)。リダイレクトはflask=次にHTTPSに移動するため、リダイレクトの前に明確です。

flaskアプリがsslを使用していて、基本認証を要求する前にリダイレクトがある場合は、問題ありません。

1
Joe M