博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于Asp.Net中FileUpload控件属性PostedFile.ContentType的提示
阅读量:7014 次
发布时间:2019-06-28

本文共 803 字,大约阅读时间需要 2 分钟。

PostedFile.ContentType这个属性通常用来判断上传文件的MIME类型,我们通常以此来拒绝某些类型的上传,比如仅允许上传图像文件,然而这个属性其实是很不稳定的:

 

MIME类型没有统一

假如我们希望仅允许上传jpg文件,那么通常做法就是判断上传文件的ContentType是否为“image/jpeg”,不是则拒绝,着看起来很简单,但是实际上这个网站通过Chrome浏览和使用时不会有问题,但使用IE(测试时使用的是IE8)上传jpg文件就会遭拒了,经过调试,发现IE上传时的ContentType是“image/pjpeg”。

这还仅限于两个浏览器、一种文件格式的情况,如果是多家浏览器多种文件格式的话,要兼顾就有得头疼了。

在我简单的几下测试中,发现的其他区别有:

  • png文件Chrome提交的ContentType为image/png,而IE提交为image/x-png
  • zip、rar、msi等文件使用Chrome提交的ContentType都为null,IE可以正确获取

 

可靠性与安全性低

由上一个问题很容易就想出:MIME类型完全是由客户端说了算的

而既然是客户端的东西,那就是不可信的,因为用户完全可以使用非主流浏览器或是恶意程序进行欺骗。

比如将可执行文件伪装为图像的MIME骗过服务端的检查,而如果你正好在服务端存储时仍保留了原文件的扩展名的话,就非常危险了。

(比如通过欺骗上传了一个aspx文件,然后就可以通过访问其url直接执行了)

 

结语

为今除了这个属性之外,还是没有什么更好的方法来获取上传文件真实类型的,所以只能继续使用,但要记住需在兼容性和安全性两方面多下功夫,否则会很郁闷。

本文转自斯克迪亚博客园博客,原文链接:http://www.cnblogs.com/SkyD/archive/2010/09/12/1824549.html,如需转载请自行联系原作者

你可能感兴趣的文章
http_load讲解
查看>>
Ubuntu 14.10安装libvirt KVM
查看>>
关于性能优化
查看>>
DNS服务器
查看>>
通配符和重定向
查看>>
JavaScript doesn't support non-String keys
查看>>
阿里云突发性能t5实例如何开启无性能约束模式?
查看>>
Ubuntu 设置环境变量
查看>>
如何使用Python执行系统命令方法?老男孩IT教育
查看>>
学习之初,约定,认识Linux,创建虚拟机,安装CentOS7镜像
查看>>
Linux磁盘管理
查看>>
用Angular动态添加、删除输入框并计算总值
查看>>
C语言网络通讯的示例
查看>>
Linux中DNS反向解析配置
查看>>
mysql数据库安装与使用(附安装包)
查看>>
Win8系统108个运行命令 你能记住多少?(转)
查看>>
网站主机
查看>>
Connection封装
查看>>
如何判断 Linux 是否运行在虚拟机上
查看>>
MySQL中PreparedStatement sql中in的引号问题
查看>>