首页 文章

php上传文件安全问题? [重复]

提问于
浏览
0

可能重复:上传时的安全威胁

我允许用户将图像上传到我们的网站 . 我是否正确地认为我应该检查文件.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

4 回答

  • -1

    上传文件时没有安全问题 .

    • 只需确保您只存储带有图像扩展名的上传文件

    • 文件大小有上限 - 这将保护服务器免受恶意人员发送(例如 /dev/zero )给您 .

    • 提供这些文件时,请确保MIME类型适用于图像 .

    其他帖子不正确

    • 浏览器不运行PHP代码

    • 不要相信浏览器中的任何内容 . 只需从浏览器中获取数据即可 . 即你可以伪造MIME类型 .

  • 2

    调整图像大小听起来是个好主意 . 不要忘记使用php代码上传一些真实图像只是为了在任何本地包含漏洞中使用它们 .

  • 2

    识别文件类型的最佳方法是使用 file 命令行工具或基于相同'magic string'数据库原理的任何其他工具,它知道许多文件的二进制签名,并告诉您哪一个是匹配的 .

    这种方法的优点在于它既不受扩展和MIME类型操作的影响,也不会受到用于调整文件大小的图像处理库的潜在攻击(多年来已经存在一些) .

    这种方法的缺点是它可能在边界情况下失败(通常不是验证的大问题)并且您需要能够使用这样的工具,这可能在许多共享主机提供商上不可用 . 从好的方面来说,这里使用这种方法有一个PHP扩展:http://www.php.net/manual/en/intro.fileinfo.php

  • -2

    你绝对应该检查上传文件的mime类型,因为攻击者可以有效地上传一个名为somethingbad.php.jpg的文件,它将像普通的php脚本一样执行 .

相关问题