先日の日記『「10日でおぼえるPHP入門教室 第4版」はセキュリティ面で高評価』では、同書のアップロード機能のセキュリティ面を評価しつつ、「もうひと踏ん張り確認して欲しい内容がある」として、画像XSSの可能性について指摘しました。では、これを直せば完璧かというと、実はそうとも言えないという微妙な問題があります。それは、アップロード先の場所とファイル名の問題です。 ファイルをアップロードするディレクトリ: ドキュメントルート下の /php10/doc/ ファイル名: ブラウザから送信されたファイル名そのまま これらのうちファイル名の拡張子については、gif/jpg/jpeg/pngのみを許すという、いわゆるホワイトリスト検査がされていて、またgetimagesize()関数により、画像ファイルであることの簡易的なチェックをしています。しかし、この状態では、環境によってはアップロードしたファイ
![Apacheの多重拡張子にご用心](https://cdn-ak-scissors.b.st-hatena.com/image/square/08c6c115390fcca4e77ba2413e92361d221144ef/height=288;version=1;width=512/https%3A%2F%2F3.bp.blogspot.com%2F-CiluM5m6HV4%2FVUD1_vZYSEI%2FAAAAAAAAMQk%2FQ7AVipg3WIo%2Fw1200-h630-p-k-no-nu%2Fphp10-phpinjection.png)