[ASP.NET] 限制上传文件类型的两种方法

转载 2007年09月18日 13:42:00
通常,为了防止因用户上传有害文件(如木马、黑客程序)引发的安全性问题,Web程序都会对用户允许上传的文件类型加以限制。而本文将要介绍的就是如何在ASP.NET应用程序中利用Web Control的内置属性简单高效地实现限制上传文件类型的功能。

  在调用PostFile对象的SaveAs方法保存上传文件之前,可以通过PostFile对象的FileName属性得到上传的文件名。而有了上传的文件名,就可以采用比对文件后缀名的方法知道上传的文件是否属于允许上传的文件类型。

  根据这个思想,我们就得到了下面这段代码:

If Path.GetExtension(sFilePath) <> ".zip" Then
    Label2.Text = "本应用程序只允许上传zip格式的文件,请重新选择!"
    Return

   这时如果上传后缀名不是zip的文件,就会发现文件无法上传了。不过,这并表示我们就不能把上传其他格式的文件了。其实,如果在上传前,事先把文件后缀名改成zip,上面这段代码就失去作用了。

之所以会出现这种情况,在于上面的判断仅仅比对了文件名字符串,并没有对文件格式做进一步的分析。因此,如果要彻底限制上传的文件类型,还需要用到PostFile对象的ContentType属性。ContentType属性的功能是获取客户端发送的文件的 MIME (注一)内容类型,由于浏览器在向服务器发送请求前,首先会确定发送内容的MIME类型,并将MIME类型作为信息的一部分提交到服务器端,因此,有了MIME类型信息(注二),就可以准确知道上传文件的实际类型了。

If File1.PostedFile.ContentType <> "application/zip" Then
    Label2.Text = "本应用程序只允许上传zip格式的文件,请重新选择!"

这时,如果再采用修改后缀名的方法上传文件就会发现再也无法上传了。

  注一:MIME是一种技术规范,其中文翻译为多用途Internet邮件扩展(Multipurpose Internet Mail Extensions),主要用来在Internet传输过程中表示不同编码格式的文件;

  注二:要获取不同文件格式的MIME定义,只要启动注册表编辑器,然后在HKEY_CLASSES_ROOT下找到跟后缀名对应的注册表项,如果存在文件格式的MIME定义,在右侧窗口就会显示一个名为“Content Type”的键,而这个键的值就是文件格式的MIME定义。

 

 

  以上两种方法混用,上传文件基本上就被限制了。但是如果某些有心人如果更改注册表的 MIME 值的内容一样可以上传恶意程序,如果这样的话,只有加固程序和系统,不让其更改上传后文件的扩展名。或是采用自定义的控件,采用更严密的检测措施

 

asp.net判断上传文件格式的方法

 ASP.NET中在判断文件格式时,如果通过截取扩展名来做判断、通过ContentType (MIME) 判断都不太安全,因为这两种方式用户都可以伪造。 下面介绍通过byte获取文件类...
  • whaxrl
  • whaxrl
  • 2015年08月14日 17:23
  • 808

如何有效的限制上传文件类型

本文导读:通常,为了防止因用户上传有害文件(如木马、黑客程序)引发的安全性问题,Web程序都会对用户允许上传的文件类型加以限制。         在上传文件过程中,可以通过修改扩展名来逃过文...
  • qq_26858883
  • qq_26858883
  • 2015年03月27日 11:45
  • 929

php中web上传文件的原理及如何限制上传文件的大小及格式

move_uploaded_file();  利用php的文件函数来实现上传 这段代码分为两个文件,一个为upload.html,一个是upload.php upload.htm...
  • Wss0130
  • Wss0130
  • 2014年09月26日 09:21
  • 10662

FileUpload控件文件上传、扩容、限制文件类型及上传验证

首先,文件上传需要使用FileUpload控件,针对于此控件我们来进行一系列的操作。 1、将选中文件上传到目标位置: //获取上传文件的文件名称 string name = File...
  • xianglikai1
  • xianglikai1
  • 2016年07月30日 22:18
  • 1053

JavaScript限制上传文件类型的代码

JavaScript限制上传文件类型的代码 2009-06-28 15:42:56 | 【大 中 小】 好图网图标搜索引擎,提供超过60万的免费图标、PNG图标、ICO图标、ICNS图标、网页图标 ...
  • jinli1990
  • jinli1990
  • 2014年03月10日 16:04
  • 804

Js_限制上传文件类型

extArray = new Array(".gif", ".jpg", ".png"); function LimitAttach(form, file) { allowSubmit = fal...
  • mikyz
  • mikyz
  • 2017年04月06日 17:09
  • 238

input file控件限制上传文件类型

网页上添加一个input file HTML控件:   默认是这样的,所有文件类型都会显示出来,如果想限制它只显示我们设定的文件类型呢,比如“word“,”excel“,”pdf“文件  ...
  • lvvcs
  • lvvcs
  • 2016年10月24日 10:25
  • 272

用ASP.net判断上传文件类型的三种方法

一、 安全性比较低,把文本文件1.txt改成1.jpg照样可以上传,但其实现方法容易理解,实现也简单,所以网上很多还是采取这种方法。...
  • Denghejing
  • Denghejing
  • 2014年09月18日 10:18
  • 1601

文件上传类型限制

文件上传时,限制上传的文件类型
  • u011752272
  • u011752272
  • 2016年09月05日 11:00
  • 3416

asp.net判断上传文件格式的方法

 ASP.NET中在判断文件格式时,如果通过截取扩展名来做判断、通过ContentType (MIME) 判断都不太安全,因为这两种方式用户都可以伪造。 下面介绍通过byte获取文件类...
  • whaxrl
  • whaxrl
  • 2015年08月14日 17:23
  • 808
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[ASP.NET] 限制上传文件类型的两种方法
举报原因:
原因补充:

(最多只允许输入30个字)