2013-05-20 51 views
0

我有图片上传网站。有人在这里上传贝壳文件。 我的验证是: - 检查文件的MIME(只有图像的MIME能够) - 检查是否返回数组getimagesize(由is_array) 如果不是,错误。 仍然有人正在上传shell文件。请帮忙。 Thnkas很棒!防止上传shell文件。 php

小检查:

$ext = ($_FILES['files']['type']); 

if (($ext != "image/jpeg") && ($ext != "image/pjpeg") && ($ext !="image/png") && ($ext != "image/gif") && ($ext != "image/bmp") && ($ext != "image/x-icon") && (!is_array(getimagesize($_FILES['files']['tmp_name'])))) { 

    // Show error 
} else { 
    // Keep upload... 
} 
+1

提供了一些代码 –

+1

除了事实上有人可以上传贝壳我不知道他们如何运行它们。你是否让人们在公共场所上传文件? – PeeHaa

+0

你能告诉我们你的代码吗? – Max

回答

1

您应该检查文件的权限,则不应由PHP执行。 很容易将数据存储在图像的栅格数据矩阵中(显然)。

看着这些无辜的水母:

Innocent jellyfishes

#1转换我的无辜.BMP在.PNG

原来的.bmp可以a friend's server找到。 如果你看看左下角,你会看到奇怪的像素,对应于像素数据中写入的ascii数据。

为了避免shell文件,你应该应用一个修改,它会稍微改变图像的每个像素点。

对我来说,转换(压缩)似乎是一个好的开始。

祝你好运!

+0

哈哈。同样的事情,我做了一阵子回来。只有我使用了gif,因为gif的前几个字节是文本,并且不会对脚本造成太大的问题。 – iWantSimpleLife

+0

我应该怎么做? – user2400053