web-dev-qa-db-ja.com

CSSスタイルシートでプロトコル相対URLを使用する場合のセキュリティリスクは何ですか?

SonarQube を使用してプロジェクトの静的コード分析を実行したところ、CSSファイルの1つにセキュリティの脆弱性が検出されました。

セキュリティ上の理由から、プロトコル相対URLは使用しないでください。

違反コード

@font-face {
    src: url("//myfont");
}

準拠ソリューション

@font-face {
   src: url("https://myfont");
}

見る

stylelint関連ルール


どちらのリンクもセキュリティに関連しておらず、プロトコル相対URLを悪用するエクスプロイトを見つけることができませんでした。

このルールは 2016年9月 に追加されました。

CSSスタイルシートでプロトコル相対URLを使用することにセキュリティ上のリスクはありますか?

4
Benoit Esnard

あなたの質問は Paul Irish によるブログ投稿にリンクしています。これは、これが現在アンチパターンと見なされていることを述べています。 (2017年以降)

なぜ//が使用されたのですか?

その理由は、//mysite.com/some/resourceを記述でき、サイトがHTTPまたはHTTPSで呼び出されたかどうかに応じて、http://mysite.com/some/resourceまたはhttps://mysite.com/some/resourceのいずれかに解決されるというものでした。

サイトがHTTPS経由で提供されている場合にHTTPリソースをロードすると、ブラウザが通常、混合コンテンツをロードするWebサイトについて不平を言うため、問題が発生する可能性があります。特に、IE6は大きなエラーメッセージを表示し、続行するかどうかを本当に確信しているかどうかを尋ねます。

では、なぜすべてをHTTPSにリダイレクトしないのでしょうか。

2010年にこのブログ投稿が作成されたとき、HTTPSは高価であると考えられていたためです。 Let's Encryptが当時無料の証明書を提供していなかっただけでなく、HTTPとHTTPSの間にはかなりのパフォーマンスの違いがあったためです。最近では、これはもう当てはまりません、そして HTTPSオーバーヘッドの原因は無視できます です。

//を使用するとどうなりますか?それは危険ですか?

実際にはありませんが、使用する理由もありません。今日の推奨事項は、すべてに対してHTTPSを使用することです。本当に、HTTPSへのリダイレクト以外にプレーンなHTTPを提供する言い訳はもうありません。ブラウザが最終的にHTTPSをデフォルトとして表示する場合、HTTPが存在する理由はまったくありません。

3
MechMK1