有没有办法在php 中找到确切的文件类型而不查找点(。)之后的字母?因为在这种情况下,即使您将exe文件重命名为png,它也将被视为仅作为恶意的png。而像pathinfo()
这样的PHP函数也只返回dot之后的值,这是不可靠的。对此有任何建议或想法将不胜感激。
答案 0 :(得分:3)
您要找的不是“扩展程序”,它是文件的类型。这已被标准化为MIME type。有许多方法可以检测文件的MIME类型,全部为previously discussed。迄今为止的首选方法是finfo。
答案 1 :(得分:0)
你想要的不是文件扩展名,而是mime-type。文件扩展名只不过是一个命名约定,正如您所指出的,它很容易被欺骗。您可以使用finfo_file
功能获取此信息。
答案 2 :(得分:0)
上次检查时,您可以使用php函数获取图像的确切文件类型。不确定任意文件。
不可以100%准确地检测任何文件的文件类型。永远。您可以制作任意文件,并且该文件将无法作为检测到的类型打开。
通过检查文件签名(前几个字节),可以高精度地检测二进制文件的文件类型。如上所述,结果不是100%保证。但是,您必须有一个文件类型签名库才能查找。
检测文本文件的文件类型是可能的,但很难。你能区分不同的语言吗?如果代码可以用多种语言编译怎么办?
答案 3 :(得分:-2)
可靠。扩展名正好是最后一个点后面的字母。如果将file.exe重命名为file.png,则其新扩展名为.png,将不再可执行(在Windows中,在POSIX系统中,可执行性不是通过文件扩展名控制器)。