ブラウザはHTTPSを使用して提供されるページでアクティブな混合コンテンツを許可しないことを知っています。これは、ページのセキュリティを危険にさらすアクティブなMitMによってJavaScriptが変更される可能性があるためです。多くのブラウザは、安全でないソースから画像やその他のパッシブコンテンツが読み込まれないようにします 理由の数 。
では、なぜHTTPS経由で提供されるサイトがContent-Disposition: attachment
またはContent-Type: binary/octet-stream
ダウンロードを強制するヘッダー?
たとえば このダウンロードページ は、最初はHTTPS経由で提供されますが、ユーザーを安全でないダウンロードURLにリダイレクトします。 Chrome単に盲目的にファイルを自動的にダウンロードし、そのオリジンに関する情報を提示しません。Firefoxdoesオリジンをその中に表示しますダウンロードダイアログがダウンロードを続行することを許可し、ユーザーに警告しません:
このような任意のコード(安全なサイトからのものと思われる)をダウンロードして実行するユーザーは、注入された一部のJavaScriptよりもはるかに損傷を与える可能性があることを考えると、なぜブラウザはこの動作を許可するのですか?含まれているスクリプトのような安全な方法でこれらのダウンロードを強制する必要がないのはなぜですか?
それはユーザーの選択を尊重することです。一般的には、ユーザーが何をしたいかを選択できるようにします。
ダウンロードしたアプリケーションは不活性です。ウイルスをダウンロードしたからといって、実行するまですぐにシステムに害が及ぶことはありません。
いずれの場合でも、インターネットからアプリケーションをダウンロードすると、ユーザーはアプリケーションの実行を許可するかどうかをOSから尋ねられます。 Windowsではプロンプトウィンドウが表示され、Linuxでは実行権限を設定する必要があります。また、ウイルス対策アプリケーションは、書き込み/読み取り中のダウンロード済みアプリケーションをスキャンします。ブラウザがこれをユーザーに要求する必要はほとんどありません。
Windowsは、セキュリティを意識したユーザーがダウンロードしたアプリケーションの整合性を証明するために使用できる暗号署名もサポートしています。 Linuxでは、これはパッケージマネージャーによって行われます。
これがJavaScriptに適用されないのはなぜですか?一般的に、ユーザーは個々のJavaScriptファイルを実行することを選択しませんが、サイトにアクセスすることの副作用です。また、暗号化されていないソースからのJavaScriptを使用すると、ユーザーが知らないうちにMITM攻撃者がスクリプトを変更することは簡単です。