Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/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_Image Processing_File Upload_Security_Image Uploading - Fatal编程技术网

使用php处理图像上传的最终决定是什么?

使用php处理图像上传的最终决定是什么?,php,image-processing,file-upload,security,image-uploading,Php,Image Processing,File Upload,Security,Image Uploading,在读了很多文章之后。我会说,那么我应该怎么做才能通过文件上传保护我的网站免受黑客攻击呢 从这些链接: 这意味着MIME是无用的,而扩展是可行的。但最终双方只是在争论,如果我是对的,双方都同意说MIME或扩展都有安全漏洞。那里有很多仇恨 这也就是说MIME也是无用的,扩展也不是傻瓜式的,因为HTML或JAVASCRIPT代码可以插入GIF图像文件(或其他文件),IE可能会误解这些代码,从而导致恶意代码的快速后门进入(我真的希望每个人都投票停止IE的使用。它就像是一个黑客浏览器。) 这意味着给文件一

在读了很多文章之后。我会说,那么我应该怎么做才能通过文件上传保护我的网站免受黑客攻击呢

从这些链接:

  • 这意味着MIME是无用的,而扩展是可行的。但最终双方只是在争论,如果我是对的,双方都同意说MIME或扩展都有安全漏洞。那里有很多仇恨

  • 这也就是说MIME也是无用的,扩展也不是傻瓜式的,因为HTML或JAVASCRIPT代码可以插入GIF图像文件(或其他文件),IE可能会误解这些代码,从而导致恶意代码的快速后门进入(我真的希望每个人都投票停止IE的使用。它就像是一个黑客浏览器。)

  • 这意味着给文件一个非可执行权限,这样无论它是什么,它都不会运行(但这会保护我们免受嵌入在第二条声明中提到的图像中的xss/html/javascript/等的攻击吗?如果给予该文件不可执行权限将保护我们免受这些嵌入的威胁。它还会保护我们免受其他威胁吗?是否有其他形式的黑客可以绕过这种方法?)

  • 还有一句话是这样说的:“重新处理图像”“其他方法只是”对黑客来说很无聊。”。这在某种程度上是一种确定图像是否为图像的可靠方法(依我看,因为imagick不会转换非图像,对吗?不确定。还没有深入研究。深入研究)

  • 那么,保护我们的网站免受文件上传威胁的最佳安全方法是什么

    如果我们检查所有:

    • 有效的MIME类型
    • 有效扩展名
    • GETIMAGESIZE()检查
    • 确保不可执行权限
    • 重新处理图像
    这足够安全地上传图像文件吗

  • mime类型
    很容易伪造,文件扩展名也很容易伪造。如果您需要关于文件类型的线索,请使用它们,假设用户是好人。不要依赖它
  • 我的观点完全正确
  • 授予文件不可执行权限是一个好主意。从web安全的角度来看,这是无用的。您的
    .php
    文件是否可执行?否。它们是否仍由web服务器处理?是
  • 这就是方法。例如,用imagick打开文件。如果imagick抱怨文件格式,那么不要保留它

  • 是的,如果执行正确,4是防弹的。它不是用来识别图像是否正确,而是用来从图像文件中删除所有额外的数据。其他3个都是垃圾,尤其是第3个。所以在安全方面,4就足够了?你对#5有什么看法?对如何实现#4有什么建议吗?因为我不知道从哪里开始ne.@YourCommonsense您忘记将上载的文件放在web根目录之外,并且不允许用户直接访问该文件,而是使用passthru脚本将其代理给用户