2

使用一个简单的 firefox 插件,黑客可以更改他们想要上传的任何文件的 mime 类型,绕过您的文件类型检查器。

然后,黑客可以使用 GIMP 之类的程序将 php 脚本嵌入图像、音频或任何其他文件的二进制数据中。

我该如何检查并防止它?

4

1 回答 1

2

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

然后,您可以使用允许在 PHP 中执行病毒扫描的库,例如php-ClamAV 。

您可以丢弃除您期望的文件扩展名之外的任何文件扩展名(例如,如果您期望图像,则为 .png、.jpg 等)。在图像的特定情况下,您还可以通过修改图像来中和图像(例如稍微调整它们的大小、修改压缩率、修改数据并中和任何可执行文件)。

最后当然是不给文件执行权。但与评论中所说的相反,这并不能真正保护你。例如,如果黑客通过注入找到了运行 php 文件的方法,他将能够对文件进行 chmod 并正确执行(甚至运行它)。

一个好的做法是始终以不可预测的方式重命名文件。如果上传后不打算被客户端访问,请将文件发送到禁用目录浏览的文件夹中。

于 2012-11-27T13:40:50.523 回答