我想在PHP中验证上传的文件类型,并将上传限制为相对安全的类型。
我的网络应用程序允许在线报告学术不诚实(通常是抄袭)。该用途可以上传支持文档。该报告通过电子邮件发送给相应的大学官员,并附有支持文件作为附件文档。我试图尽可能地保护电子邮件收件人免受危险附件的侵害。
由于电子邮件收件人都是大学地址,因此所有电子邮件在发送之前都会通过恶意软件检查程序运行。但是,我想至少检查危险的文件类型。
至少第一次检查是使用php finfo_file或finfo :: file。但是,它会调用一些未用作拉链的文件,无论如何都是拉链。 MS Office文件就是示例。这是一个问题,因为zip,gzip等文件存档很危险,因为它们可以隐藏危险文件。我不能简单地使用finfo :: file禁止zip文件而不禁止,例如,我不需要禁止的docx文件。不是说docx文件特别安全,我还是要允许它们。
我可以检查文件扩展名以查看扩展名是否将其声明为文件存档。那里有多少扩展?啊。或者,我可以将几种类型列入白名单。或者,......
当然这不是一个新问题。这里有最好的做法吗?如果不这样做,人们是否有合理的检查/规则来实施的建议?