使用简单的 Firefox 插件,黑客可以更改他们想要上传的任何文件的 MIME 类型,绕过文件类型检查器。
然后,黑客可以使用 GIMP 等程序将 php 脚本嵌入到图像、音频或任何其他文件的二进制数据中。
如何检查并防止这种情况发生?
最佳答案
您可以使用mime_content_type () 来获取文件的实际 mime 类型,而不是客户端浏览器传输的值。
然后您可以使用诸如php-ClamAV之类的库允许在 PHP 中执行病毒扫描。
您可以放弃除您期望的文件扩展名之外的任何文件扩展名(例如,如果您需要图像,则为 .png、.jpg 等)。 在图像的特定情况下,您还可以通过修改图像来中和图像(例如稍微调整它们的大小、修改压缩率、修改数据并中和任何可执行文件)。
最后当然是不赋予文件执行权。但与评论中所说的相反,这并不能真正保护你。例如,如果黑客找到一种通过注入(inject)来运行 php 文件的方法,他将能够 chmod 该文件并获得正确的执行(甚至运行它)。
一个好的做法是始终以不可预测的方式重命名文件。如果上传后不打算让客户端访问,请将文件发送到禁用目录浏览的文件夹中。
关于php - 如何验证使用 php 上传的文件不包含可执行二进制文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13581425/