上传文件类型限制?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了上传文件类型限制?相关的知识,希望对你有一定的参考价值。

为了网站的安全,做上传程序时,请问该限制哪些类型的文件,才不会给哪些黑良心的东西有可趁之机?
网站是C#/.NET。
注意,朋友们不要答离题啊,哈哈,我是问应该要限制哪些类型的文件,而不是怎样限制文件类型啊。

其实,不应该考虑该限制哪些,应该考虑该允许哪些。从这个角度考虑范围就少多了。

网站允许上传无非是图片,FLASH,视频,压缩包,这些对于服务器来说都是无害的。至于里面是否嵌病毒,这个是没办法控制的,即使服务器装杀毒软件也有办法免杀。

一般来说就是做扩展名判断,但是开发的时候必须要注意的是,上传后的文件必须必须改文件名称,否则容易被人用空字符(\0)截断从而上传可执行文件,例如构造"muma.aspx\0img.jpg"的文件包上传。虽然在ASP类程序中经常有这种问题,ASP.NET的没关心过,但还是需要当心点好。上传后的文件用DATETIME.Ticks之类的数字重命名一下更稳妥点。
参考技术A cs/aspx/exe/bat/asmx/ascx/resx等等网站会用到的文件,其实你不用去限制这些文件,这些文件太多了

你只要设定你只需要他上传的文件类型就可以了,不是这个类型的文件统统不允许上传就OK了!
参考技术B 我是问应该要限制哪些类型的文件,而不是怎样限制文件类型啊。

我先好好研究研究你这句话...

------------------------

拿后缀名限制???没想过..

给你个例子:

if(this.myfile.PostedFile.ContentType.ToLower().IndexOf("image")<0)
//该文件不是图片


用后缀判断相当不安全.
参考技术C 实际上都不是很安全

this.myfile.PostedFile.ContentType这种方式可以防止一般的行为改后缀名的行为

但是如果那个人把注册表改了 还是不能阻止

这个问题值得研究啊
参考技术D 用正则表达式 vs2005自带的那种验证控件就行
^(([a-zA-Z]:)|(\\2\w+)\$?)(\\(\w[\w].*)+(.jpg|.JPG|.jpeg|.JPEG|.BMP|.bmp|.gif|.GIF)$)

以上是关于上传文件类型限制?的主要内容,如果未能解决你的问题,请参考以下文章

Java web文件上传怎么限制文件类型

在 JQuery 文件上传演示中限制文件类型

SWFUpload 上传任意文件类型如何设置?

struts2之限制文件上传类型

input file实现多选和限制文件上传类型

前端限制上传文件的类型