サイト上にPDFがある場合、
http://path/to/pdf/file.pdf#whatever_name_you_want=javascript:your_code_here
とアクセスすることで、スクリプトが実行されてしまうという問題。
Firefox 2.0 + Acrobat 7.0 で再現を確認。ちょっと凝ったスクリプトを実行させようとしたら Firefox が死んでしまったのでどこまでできるのか不明だけど他サイトに置いたスクリプトを読み込ませられたので、こりゃやばそう。
Acrobat 側の問題だとは思うけど放置しておけないので、手元の環境では、Content-Type: application/pdf ではなく、application/octet-stream を返すよう、以下のように Apache を設定してみた。とりあえず再現しなくなったようなのだが、これでいいのかどうか不安。
AddType application/octet-stream .pdf
IE でも起こるらしい(手元で再現できてない)。そうすると、前述の対策では「拡張子ではなく、内容によってファイルを開くこと」のせいでうまくいかない。
Content-Disposition: attachment;
をつけて返すことで回避できそう。前述のも含めるとこんな感じかな。
<Files "*.pdf"> Header set Content-Disposition: attachment ForceType application/octet-stream </Files>
これによると、Version 8.0.0 で修正されてるとのこと。早めにアップデートしておきましょう。って、7以下に対するアップデートはなし?
おっと、こりゃ大変だ。