安全地允许通过MIME TYPES / fil上传Web字体(ttf,eot,svg,woff,otf)

我试图通过检查MIMEtypes来允许在我们的应用程序中安全地上传Web字体。 这适用于我们允许的大多数types的文件,但这对于Web字体是一个问题。

我们使用PHP的http://php.net/manual/en/book.fileinfo.php来检查MIMEtypes

问题是,PHP将检测所有的networking字体作为MIME“应用程序/八位字节stream”,但允许,将允许.exe或许多其他可能危险的file upload。

处理这种file upload的最好方法是什么?

找到一个包含字体格式信息的神奇文件,并将其传递给finfo_open()

我不依赖于在PHP中建立的mime跳棋。 我总是有他们的问题。 如果你正在运行linux,使用PHP的exec命令在bash中执行mimetype命令并将其返回给PHP。

U应该使用phpinfo来检查扩展名,mime类型可以是假的,而U可以使用pdf的MIME类型来获得.php文件。

编辑

 $file = "abc.ttf"; if(in_array(strtolower(pathinfo(file, PATHINFO_EXTENSION)), array("ttf"))) { // OK } 

你可以添加更多的扩展到数组

如果TTF文件是唯一允许上传的文件,请使用: http : //www.phpkode.com/scripts/item/ttf-info-plus/