我允许用户将图片上传到我们的网站。我是否正确地认为我应该检查文件.jpg / .jpeg / .gif的扩展名以及mime类型以确保没有上传危险文件?
我还应该在上传时调整文件大小以检查它是否是实际的图像文件,而不是重命名的exe或类似文件?例如,如果调整大小失败,那么它不是图像文件。
我应该防范任何其他形式的攻击吗?
编辑:还在图像文件夹中添加.htaccess文件,以便php文件无法执行:
AddHandler cgi-script .php .php3 .php4 .phtml .pl .py .jsp .asp .htm .shtml .sh .cgi
Options -ExecCGI
order deny,allow
deny from all
答案 0 :(得分:2)
识别文件类型的最佳方法是使用file
命令行工具或基于相同“魔术字符串”数据库原理的任何其他工具,它知道许多文件的二进制签名并告诉您哪一个是匹配。
这种方法的优点在于它既不受扩展和MIME类型操作的影响,也不会受到用于调整文件大小的图像处理库的潜在攻击(多年来已经存在一些)。
这种方法的缺点是它可能在边界情况下失败(通常不是验证的大问题)并且您需要能够使用这样的工具,这可能在许多共享主机上不可用供应商。从好的方面来说,这里使用这种方法有一个PHP扩展:http://www.php.net/manual/en/intro.fileinfo.php
答案 1 :(得分:2)
调整图像大小听起来是个好主意。不要忘记,使用php代码上传一些真实图像只是为了在任何本地包含漏洞中使用它们。
答案 2 :(得分:-1)
你一定要检查上传文件的mime类型,因为攻击者可以有效地上传一个名为somethingbad.php.jpg的文件,它将像普通的php脚本一样执行。
答案 3 :(得分:-2)
上传文件时没有安全问题。
/dev/zero
)给你。 其他帖子不正确