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

时间:2011-05-31 07:21:30

标签: php linux mime-types

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

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

检查mime类型

问题是php会将所有网络字体检测为mime“application / octet-stream”,但允许这样做,会允许.exe或许多其他可能危险的文件上传。

处理此类文件上传的最佳方法是什么?

4 个答案:

答案 0 :(得分:1)

查找包含有关字体格式信息的魔术文件,并将其传递给finfo_open()

答案 1 :(得分:0)

我不依赖于PHP内置的mime checkers。我总是遇到问题。如果您正在运行linux,请使用PHP的exec命令在bash中执行mimetype命令并将其返回给PHP。

答案 2 :(得分:0)

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

修改

$file = "abc.ttf";

if(in_array(strtolower(pathinfo(file, PATHINFO_EXTENSION)), array("ttf")))
{
    // OK
}

你可以为数组添加更多扩展

答案 3 :(得分:0)

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