检查上传的文件是否属于 php 中的不安全文件类型


Check if uploaded file is of a insecure filetype in php

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

最好的方法是什么?理想情况下,可以在Windows和Linux服务器上工作的东西,但如果现在两者都可以使用Linux的话。

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

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

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