web-dev-qa-db-ja.com

「安全でないコンテンツタイプの設定」に関するセキュリティレポート:これはCSSとJavaScriptにも適用されますか?

自動脆弱性スキャナーのレポートを作成しています。 1つのアイテムは

Webサーバーの設定ミス:安全でないコンテンツタイプの設定(11359)

たとえば、次のように、特定のHTMLページの文字セットを返さないようにします。

HTTP/1.1 200 OK
...
Content-Type: text/html; charset=utf-8
...

問題の報告された応答は、

HTTP/1.1 200 OK
...
Content-Type: text/html
...

これで意味が理解できましたが、CSS、特にJavaScriptについてはどうですか?

CSSおよびJavaScriptリソースの文字セットは、規格によって厳密に定義されていますか?

JavaScript変数に国際化された文字列がある場合はどうなりますか?それらは本質的にエスケープする必要がありますか?または、この場合は文字セットの宣言が必要ですか?

1
Marcel

CSSおよびJavaScriptリソースの文字セットは、規格によって厳密に定義されていますか?

いいえ。HTMLと同様に柔軟性があります。つまり、スタイル自体、埋め込みHTML、HTTPヘッダー、またはバイトオーダーマークを使用して、スタイル自体で定義できます。明示的に定義されていない場合は、デフォルトがあるか、埋め込みドキュメントの文字セットエンコーディングに依存している可能性があります。

@charset "UTF-8";
<link rel="stylesheet" type="text/css" charset="utf-8" ...>
Content-Type: text/css; charset=utf-8

JavaScriptについても同様です。したがって、常に文字セットエンコーディングを指定する方が適切です。

2
Steffen Ullrich