Content-Type一覧・検索ツール|MIMEタイプをすぐ確認【無料】

無料Webアプリ - Content-Type一覧・検索ツール|MIMEタイプをすぐ確認【無料】 Webセキュリティツール
無料Webアプリ - Content-Type一覧・検索ツール|MIMEタイプをすぐ確認【無料】
スポンサーリンク

Content-Type一覧・検索ツール

Content-Type一覧・検索ツールの使い方

このツールは、Content-Typeを一覧表示したものです。

左側の検索フィールドにContent-Type名・主な用途・日本語説明に含まれるキーワードを入力すると、一致するContent-Typeだけを表示することができます。

右側の「構造化データ」や「テキスト」などのグループフィルターボタンを押下すると、分類(グループ)ごとに絞り込んで表示することができます。「ALL」で絞り込みを解除します。

Content-Typeとは

Content-Typeは、HTTP通信で送信されるデータの種類を示すヘッダーです。

例えば、HTMLなら text/html、JSONなら application/json が使用されます。

よく使うContent-Type

・HTML

text/html

・JSON

application/json

・JavaScript

application/javascript

・画像

image/jpeg
image/png
image/gif

HTTPヘッダ例

・Content-Typeヘッダ例

Content-Type: application/json

・curl

curl -H "Content-Type: application/json"

文字化けを防ぐ「charset」の指定

Content-Typeには、データの種類だけでなく「文字エンコーディング(文字コード)」の情報も付与できます。

Content-Type: text/html; charset=UTF-8

日本語のサイトでこれが欠けていたり、実際のファイルと異なる文字コード(Shift-JISなど)が指定されていたりすると、「文字化け」が発生します。特別な理由がない限り UTF-8 を使用するのが鉄則です。

MIMEスニッフィングとは

Content-Typeに関連して、必ず知っておきたいのが「MIMEスニッフィング(MIME Sniffing)」というブラウザの機能と、それに伴うリスクです。

ブラウザの「お節介」が裏目に出る仕組み

通常、ブラウザはサーバーから送られてくる Content-Type を信じてデータを処理します。しかし、中には Content-Type が設定されていない、あるいは間違った設定で送られてくる古いWebサイトも存在します。

これに対処するため、ブラウザが「本当のデータ形式を推測(スニッフィング)する」機能を持っています。一見便利な機能ですが、これがセキュリティ上の大きな穴になることがあります。

悪意のある攻撃の例

例えば、攻撃者が「画像ファイル」にみせかけた、「悪意のあるJavaScript」を仕込んだファイルをアップロードしたとします。

  1. サーバーは、拡張子が .jpg なので Content-Type: image/jpeg として配信
  2. ブラウザはこれをスニッフィングによって画像ではなくスクリプトと勝手に判断して実行
  3. その結果、サイト閲覧者のクッキーが盗まれたり、不正な操作が行われたりする(XSS攻撃など)危険性がある

対策:X-Content-Type-Options ヘッダー

このリスクを防ぐための標準的な対策が、HTTPヘッダーに以下の一行を加えることです。

X-Content-Type-Options: nosniff

この設定をサーバーで行うことで、ブラウザに対して「Content-Typeで指定した形式以外として扱ってはいけない(スニッフィング禁止)」と強制することができます。

現在のWebサイト制作では、このヘッダーを設定しておくことがセキュリティのベストプラクティスとされています。

SVGファイルを利用したXSS(クロスサイトスクリプティング)攻撃

Content-Typeで image/svg+xml と指定されるSVGは、「画像でありながら、中身はXML(テキスト)であり、JavaScriptを実行できる」形式です。

SVGはベクターグラフィックスを記述するための言語ですが、仕様として <script> タグを含めることが許可されています。

もし、悪意のあるユーザーが以下のようなコードを埋め込んだSVGファイルをアップロードし、それを他のユーザーがブラウザで直接開いたり、特定の条件下で表示させたりすると、ブラウザ上でJavaScriptが実行されてしまいます。

<svg xmlns="http://www.w3.org/1999/xml" width="100" height="100">
  <circle cx="50" cy="50" r="40" fill="red" />
  <script>alert('XSS攻撃によりCookieが盗まれました: ' + document.cookie);</script>
</svg>

Content-Security-Policy (CSP)で「スクリプトの実行を禁止」する

X-Content-Type-Options: nosniff だけでは、SVG内部に仕込まれたスクリプトの実行を止めることはできません。

Content-Security-Policy(CSP)は、ブラウザに対して「このサイトで許可するコンテンツのソース(出所)」を細かく指示するHTTPヘッダーです。

SVGのXSS対策として、以下のようなヘッダーをサーバーから返却するように設定します。

Content-Security-Policy: script-src 'self';

このように設定すると、ブラウザは「自分のサイト(ドメイン)にある正規のスクリプトファイル以外、インラインのスクリプト(SVG内など)は一切実行しない」という極めて強い制限をかけます。

注意点

このツールはブラウザ上で処理を行うため、入力内容は外部サーバーに送信されません。

タイトルとURLをコピーしました