を返します場合は対象についての私の考えは単純です:すべてアップロードされた画像は悪です。
悪意のあるコードを含む可能性があるだけでなく、特にメタタグのために、私は隠れたメタタグを使って保護された画像を見つけて、その著作権で遊ぶためにウェブを閲覧するクローラについて認識しています。おそらく少し編集的ですが、ユーザーがアップロードした画像が著作権問題を支配していないため、私はそれを真剣に考慮します。これらの問題を取り除くために
、私は体系的GDを使用してPNGにすべてアップロードされた画像を変換します。これは多くのメリットがあります:イメージは最終的な悪質なコードとメタタグからきれいです。私はすべてのアップロードされたイメージのための1つのフォーマットしか持っていません、私は自分の標準に合うようにイメージサイズを調整することができます... 画像が有効かどうかイメージを変換用に開くことができない場合(イメージ形式を気にしないimagecreatefromstringを使用)、イメージを無効と見なします。
簡単な実装は次のようになります。
function imageUploaded($source, $target)
{
// check for image size (see @DaveRandom's comment)
$size = getimagesize($source);
if ($size === false) {
throw new Exception("{$source}: Invalid image.");
}
if ($size[0] > 2000 || $size[1] > 2000) {
throw new Exception("{$source}: Too large.");
}
// loads it and convert it to png
$sourceImg = @imagecreatefromstring(@file_get_contents($source));
if ($sourceImg === false) {
throw new Exception("{$source}: Invalid image.");
}
$width = imagesx($sourceImg);
$height = imagesy($sourceImg);
$targetImg = imagecreatetruecolor($width, $height);
imagecopy($targetImg, $sourceImg, 0, 0, 0, 0, $width, $height);
imagedestroy($sourceImg);
imagepng($targetImg, $target);
imagedestroy($targetImg);
}
はそれをテストするには:
header('Content-type: image/png');
imageUploaded('http://www.dogsdata.com/wp-content/uploads/2012/03/Companion-Yellow-dog.jpg', 'php://output');
これが受け入れ答えよりもハックの同じ種類があるので、これはまさにあなたの質問に答えていません、私はそれバグ検討する - しかし、私はあなたにUploadifyが本当にMIMEタイプを変更した場合、少なくとも
私が知る限り、これは実際にこれを行うために受け入れられたハックです。彼らが存在すれば、より良い方法を聞くことに興味があります。 –
ドキュメントは、7要素の配列を返します。どの要素がイメージかどうかを確認する必要がありますか? –
は幅と高さがゼロと1です。 –