ですが、ユーザからの入力ということもあり、脆弱性とか気になります。
ちょっとチェックしたくて試してみたんですが、getimagesize()関数では.icoファイルが判定されませんでした。また、http://www.revulo.com/blog/20070520.html にヘッダによる判定法が載っていますが、それでは不充分ではないかと感じています(そもそも攻撃手段がない、というならそれでもよいです)。
PHPを使って、アップロードされたファイルが本当に.icoかどうかを判別するにはどうすればいいですか?
phpのみで完結しないと駄目でしょうか?
外部コマンドを呼ぶことが可能で有れば、こういうコマンドラインツールが有るので、これに食わせてみて判断とかでもいい気がします。
思いつく脆弱性としては、CGI等を配置、拡張子では無くファイルの中身を見て処理を判断するIEの独自仕様(6までだったかな?)辺りを使ってスクリプトの記述とかすると悪さが出来そうでは有ります。
#実際の挙動は解りませんが。<IE
ちょっとPHPで完結しないとキツイですね……