画像にPHPコードを埋め込まれないための対策について
はせがわさん経由。画像をアップロードする機能を持ったWebアプリケーションなどで、画像ファイルへの悪意を持ったスクリプトなどの埋め込みの対処方法についてです。
完全な対策はこれらのチェックをした後、画像ファイルを別型式に変換し、元の形式に戻す方法です。例えば、GIFファイルのアップロードならGIF->PNG->GIFと変換します。変換の過程で攻撃コードは削除されます。
yohgaki's blog - 画像ファイルにPHPコードを埋め込む攻撃は既知の問題
という yohgaki さんが提示している方法が良いということです。私もそう思います。
しかし、画像アップロードがメインのサービスで、何らかのイベント時などに一気に画像アップロードが集中するようなサービスだと、GIF->PNG->GIFなどの変換に掛かるリソースも無視できないかも。
とりあえず手っ取り早く ImageMagickのconvertを使って、206KBのGIFファイルをGIF->PNG->GIFした時間の測定結果を計ってみた。(計り方間違えてたので修正。汗)
time `convert img1.gif img2.png; convert img2.png img3.gif` real 0m1.109s user 0m0.957s sys 0m0.149s
サーバーのスペックや、提供するサービスの内容などにもよると思いますが、これを多いと見積もるのかどうか。まぁ、その対策込みで対応できるように、サーバーのリソースを増やせばいいんでしょうけどね……。
IEの"仕様"を直して欲しいに一票。