application / octet-stream是接受CSV文件时可接受的安全MIME类型吗?

时间:2011-03-16 10:46:51

标签: php file-upload csv

我正在构建一个Web表单来获取CSV文件,然后将内容导入到联系人数据库中。但是,在开发过程中,我注意到在上传CSV文件时,我可用的MIME类型为application/octet-stream

Google上的快速网络搜索告诉我,application/octet-stream是二进制文件的通用MIME类型,可以是.csv.exe文件中的任何内容对我来说似乎是安全的,因为我必须确定文件类型的唯一其他信息是原始文件名。任何拥有基本计算知识的人都可以轻松改变这一点。

如何确保通过PHP中的网络表单上传的CSV文件实际上是包含上述信息的CSV文件?

3 个答案:

答案 0 :(得分:6)

这是正确的,application/octet-stream是一种通用的MIME类型。

您可以检查文件是否具有CSV扩展名,并使用函数fgetcsv()来确定文件内容是否有效。如果在将文件读取为CSV时出现问题,此函数将返回NULL或布尔值false。

答案 1 :(得分:1)

要验证文件,您不应该依赖于mime类型,因为这很容易被操作。文件扩展名也一样。它只需要15秒就可以绕过这种“安全检查”。

唯一安全方法是检查文件的内容,看它是否包含有效的csv-data。

答案 2 :(得分:0)

上传文件时,您绝不应该从不依赖MIME类型。它们可以由用户更改。