Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 恶意代码通过图片上传_Php_Validation_Image Processing - Fatal编程技术网

Php 恶意代码通过图片上传

Php 恶意代码通过图片上传,php,validation,image-processing,Php,Validation,Image Processing,我的网站有一部分允许用户上传个人资料照片。我担心人们上传恶意代码。我计划将文件类型限制为.jpg/.png/.gif/.jpeg 我担心这还不够。我将调整服务器上的图片大小。调整照片大小的过程是否足以确保图像实际上是图像而不是恶意文件 我将使用以下方法调整照片的大小。我不会将原件存储在服务器上,文件名也会更改 imagecopyresampled($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);

我的网站有一部分允许用户上传个人资料照片。我担心人们上传恶意代码。我计划将文件类型限制为.jpg/.png/.gif/.jpeg

我担心这还不够。我将调整服务器上的图片大小。调整照片大小的过程是否足以确保图像实际上是图像而不是恶意文件

我将使用以下方法调整照片的大小。我不会将原件存储在服务器上,文件名也会更改

imagecopyresampled($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);

    imagejpeg($thumb, $fullpath, 90);

只需执行此操作即可确保您正在处理图像:

if (getimagesize($sourcePath) === false)
{
   die("Not an image !");
}
为了更安全,您应该禁用上载文件夹中的PHP执行。 在.htaccess中:

php_value engine off

这不是一个问题,因为我不知道它怎么会发生。 但是,我不知道你的函数做什么(你没有发布源代码)


据我所知,注入PHP是不可能的。您可以注入SQL、Javascript、HTML等等,这是一个好问题。我在这里找到了一个讨论它的链接:


根据个人经验,我通常只允许在密码屏蔽后上传图像,以便“了解”我的用户,但我几乎总是会调整大小——我的直觉是,这就足够了,因为它会破坏原始文件,并用您自己的重采样版本替换它。

当然这是一个问题!即使你不能注入PHP(你也可以,但是网站的编码必须非常好,PHP注入才能以文件上传的形式工作)。你自己回答了你的问题:“我计划将文件类型限制为JPG、PNG等。”。没有别的事可做了。只要你的Web服务器不以PHP的形式执行JPG文件,就没有问题。也许对于刚接触PHP的人来说,如果发现这篇文章,你应该将
panic
改为
die
,以防他们真的复制并粘贴这段代码!我甚至没有想过要禁用php执行。谢谢