微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何确保他们正在上传某些文件

如何解决如何确保他们正在上传某些文件

| 好的,我允许(在脚本内)通过论坛管理员定义的方法上传某些类型的文件!如何判断这些文件是否属于管理员设置的类型,以确保它们不是伪造的文件。我目前使用的是mime-types方法,但是不同的浏览器可以设置不同的mime-types,因此这并没有太大帮助。检查文件扩展名也无济于事,因为人们可以通过给它一个允许的扩展名来解决此问题,但是扩展名可能是不同的文件类型。 也许在某处存在某种引用,可以用来检查许多不同类型的文件中的字节以确保其类型正确?也许这也可能是伪造的,但是使用表单将文件上传到并提交文件时,它至少会更加准确。 有人可以帮我解决这个问题吗? 谢谢 :)     

解决方法

        PECL
fileinfo
(或内置的> 5.3)将检查文件的字节签名以猜测其模仿类型,因此可以防止人们仅更改文件扩展名。在某些情况下,仍可能在文件中包含与文件类型的适当字节签名匹配的恶意字节。 从PHP文档:
// Procedural style
$finfo = finfo_open(FILEINFO_MIME_TYPE); // return mime type ala mimetype extension
echo finfo_file($finfo,$filename);
finfo_close($finfo);

// OO style
$finfo = new finfo(FILEINFO_MIME_TYPE);
echo $finfo->file($filename);
$finfo->close();
我相信在Unix服务器上,“ 2”会查询与GNU“ 3”实用程序相同的字节签名数据库。     ,        永远不要相信用户输入。永远不要使用检查给定的文件类型/ MIME类型来防止人们将恶意内容上传到您的服务器。如果目标是服务器安全性,那么如果用户上传了内容,则根本不允许在服务器上执行内容。对于其他人下载的文件,请确保声明内容是用户生成的,并且不能保证没有病毒。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。