HTTPヘッダのTIPS
コンピュータネットワークやセキュリティ関係の話題で時々閲覧している水無月ばけらのえび日記に, ちょっと役に立ちそうな話題があったので備忘録として残しておく.
iOSのSafariがContent-Dispositionを無視する問題が修正されたの記事に次のように記載がある.
私は以前、「JVN#465742E4 Wiki クローンにおけるクロスサイトスクリプティングの脆弱性(jvn.jp)」とか「JVN#91706484「Trac におけるクロスサイトスクリプティングの脆弱性(jvn.jp)」といったものを届け出ています。WikiもTracも、サイト利用者が自由にHTMLファイルを添付する機能を持ったアプリケーションですが、スクリプトを含むHTMLを添付されると、クロスサイトスクリプティング脆弱性のの問題が生じます。
そのための対応策として採用されたのが、HTTP応答ヘッダでContent-Disposition: attachmentを指定するという方法です。この指定があると、ほとんどのHTMLはブラウザ上で開かれず、ダウンロードのダイアログが開きます。ダウンロードした後のHTMLを開いてもドメインが異なりますので、クロスサイトスクリプティング脆弱性の問題は生じません。
つまり, 以下のコードをHTTPヘッダに含めると, ブラウザ上で処理できるファイル(例えばJPEG形式の画像ファイル)であろうとも
ダウンロードを促すダイアログが流れるはず.
Content-Type: MIME Type Content-Length: length; Content-Disposition: attachment; filename="filename"
ここで,、MIME Type はファイルの MIME Type (JPEG 画像なら image/jpeg), length はファイルの大きさ (Byte 単位), filename は実際のファイルの名前を表す.