概要
脆弱性名(Ja) | 「Content-Type」Charset がありません |
脆弱性名(En) | Missing ‘Content-Type’ Charset |
ID | 114382 |
危険度 | Low |
ファミリー | HTTP Security Header |
説明
「Content-Type」ヘッダーは、ブラウザにデータの解釈方法を伝えるためのHTTPレスポンスヘッダーです。
適切なcharsetを指定することで、ブラウザが誤って文字コードを推測するリスクを防ぎ、データの正しい表示が保証されます。
リスク
「Content-Type」ヘッダーにcharsetが設定されていないと、ブラウザが自動でエンコーディングを推測し、クロスサイトスクリプティング(XSS)攻撃のリスクが高まります。
悪意あるユーザーがブラウザのエンコーディング処理を悪用し、予期せぬ動作を引き起こす可能性があります。
特に多言語のウェブサイトで、誤った文字エンコーディングによるデータ表示の崩れや機密情報漏洩の危険性があります。
検出トリガー
- HTTPレスポンスの「Content-Type」ヘッダーに「charset」が含まれていない
NG: Content-Type: text/html;
OK: Content-Type: text/html; charset=UTF-8
対策
Apacheの設定
Apacheサーバーで「Content-Type」ヘッダーにcharsetを追加するには、以下の行を「.htaccess」またはサーバー設定に追加します。
AddDefaultCharset UTF-8
Nginxの設定
Nginxでcharsetを設定するには、以下の設定をNginxの設定ファイルに追加します。
add_header X-Content-Type-Options "nosniff";
ページごとの設定
特定のページやファイルが異なるエンコーディングを必要とする場合、各ページやコンテンツのメタタグを利用して、HTMLヘッダーにcharsetを設定することも推奨されます。
例えば、HTMLファイルの <head>
内に以下のメタタグを追加します。
<meta charset="UTF-8">
関連リンク
危険度が脆弱性ツールによって異なる場合があります。