1

我有一个文件上传表单,需要对上传的文件进行检查,以确保它不是任何可能导致服务器出现问题的东西(即:可执行文件)。这些文件主要是图像,但我将处理原始文件格式的其他扩展,可以是许多不同的扩展名。所以,我觉得最简单的方法是检查不是我不想要的东西的列表,而不是我做的事情。

做这个的最好方式是什么?理想情况下,可以在 Windows 和 linux 服务器上运行的东西,但如果现在两者都适用,则主要是 linux。

4

1 回答 1

2

我建议您应该维护允许类型的白名单,而不是阻止类型的黑名单。尽管将任何类型的基于文件扩展名的处理视为薄弱的防线,因为绕过这种检查是微不足道的。

所以不要只检查文件扩展名。验证文件的内容类型是否与扩展名匹配可能值得 - 请参阅Fileinfo扩展名。如果您只是使用图像,则可以使用 GD 或 ImageMagick 重新处理文件。

最后,我建议您将任何上传的文件存储在不允许执行的文件系统上——在 Linux/UNIX 平台上使用 noexec 挂载——尽管请注意在 Windows 上并没有真正的等价物

于 2012-05-20T20:52:20.677 回答