我正在使用一个简单的文件上传脚本。该脚本允许文件类型过滤,但我不确定我应该允许/禁止哪些文件。
我应该防止上传哪些文件类型?
您应该只允许您需要的类型(白名单)。您永远不知道您的服务器、php 或人们可以创建的文件类型会发生什么变化,以及他们可以对服务器做什么。
似乎没有理由牺牲安全性来换取更少的类型检查。
找到这个(放入.htaccess):
php_flag engine off
'关闭' php,因此无法运行文件!然后你可以允许上传任何你想要的
(感谢 Pekka 的链接)
$_FILES 中提供的 mime 是从浏览器发送的,因此信任它是不安全的。还有其他函数可以确定文件的 mime,但请注意,它们中的大多数都依赖于文件扩展名。这是一种不好的确定方法,因为我可以轻松地将 .exe 重命名为 .png 并且函数会报告它是图像。我不确定您的需求,但您可以将脚本限制为仅允许图像文件并检查它们是否真的是带有 imagemagick 或 gd 库的图像。
没有文件对服务器是危险的。但是,如果存在允许运行用户文件的安全漏洞,则任何文件都可能是潜在威胁。
我建议不要拒绝某些文件类型,而是允许用户可能想要上传的几个文件类型。
不要列入黑名单。相反,请创建允许的文件类型的白名单。