如何验证与PHP不包含可执行的二进制上传的文件?(How do I verify a file up

2019-08-03 06:01发布

用一个简单的Firefox插件,黑客可以改变他们要上传的任何文件的MIME类型,绕过您的文件类型检查。

然后黑客可以利用一个程序像GIMP嵌入的图像,音频或其他任何文件的二进制数据内的PHP脚本。

我如何检查这一点,并防止它?

Answer 1:

您可以使用mime_content_type ()来获取文件,而不是由客户端浏览器发送的值的实际MIME类型。

然后你可以使用一个库,如PHP,ClamAV的 ,允许在PHP执行病毒扫描。

(如果你期待的图像如巴纽,JPG格式等),你可以放弃,除了那些你所期望的任何文件扩展名。 在图像的特定情况下,你也可以通过修改它们中和图像(例如略微调整它们的大小,修改压缩率,一些会修改数据和中和任何可执行文件)。

最后当然,采取的不给执行权的文件。 但相反的是在评论中表示,这不会真正保护你。 如果黑客发现一种方式来运行PHP文件虽然注射例如,他就可以和chmod文件,并得到执行权(甚至运行)。

较好的做法也是对文件重命名始终以不可预测的方式。 如果它并不意味着客户端上传后进行访问,其中发送目录浏览被禁用的文件夹中的文件。



文章来源: How do I verify a file uploaded with php doesn't contain an executable binary?
标签: php security