asp.net如何正确判断上传文件格式

ASP.NET中在判断文件格式时,如果通过截取扩展名来做判断、通过ContentType (MIME) 判断都不太安全,因为这两种方式用户都可以伪造。

下面介绍通过byte获取文件类型,来做判断的方式

if (Request.Files.Count > 0)
{
//这里只测试上传第一张图片file[0]
    HttpPostedFile file0 = Request.Files[0];
      
    //转换成byte,读取图片MIME类型
    Stream stream;
    //int contentLength = file0.ContentLength; //文件长度
    byte[] fileByte = new byte[2];//contentLength,这里我们只读取文件长度的前两位用于判断就好了,这样速度比较快,剩下的也用不到。
    stream = file0.InputStream;
    stream.Read(fileByte, 0, 2);//contentLength,还是取前两位
    stream.Close();
      
    string fileFlag = "";
    if (fileByte != null && fileByte.Length > 0)//图片数据是否为空
    {
        fileFlag = fileByte[0].ToString() + fileByte[1].ToString();                  
    }
    string[] fileTypeStr = { "255216", "7173", "6677", "13780" };//对应的图片格式jpg,gif,bmp,png
    if (fileTypeStr.Contains(fileFlag))
    {
        file0.SaveAs(Server.MapPath("~/" + file0.FileName));
    }
    else
    {
        Response.Write("图片格式不正确:" + fileFlag);
    }
}

常见文件类型对应的byte数据

7076      flv视频文件;
6787      swf视频文件;
7173        gif ;
255216      jpg;
13780       png;
6677        bmp;
239187      txt,aspx,asp,sql;
208207      xls.doc.ppt;
6063        xml;
6033        htm,html;
4742        js;
8075        xlsx,zip,pptx,mmap,zip,docx;

参考资料: asp.net判断上传文件格式   http://www.studyofnet.com/news/996.html

时间: 2024-07-29 13:34:32

asp.net如何正确判断上传文件格式的相关文章

ASP.NET通过byte正确安全的判断上传文件格式

本文介绍一种更安全的方式上传图片,他能有效的防止一些通过修改文件后缀或MIME来伪造的图片的上传,从而保证服务器的安全,希望对大家有所帮助. ASP.NET中在判断文件格式时,我们以前常用的方法就是通过截取扩展名来做判断,或者通过ContentType (MIME) 判断,这两种方法都不太安全,因为这两种方式用户都可以伪造,从而达可以攻击网站,实现给网站挂马等目的. 下面介绍通过byte获取文件类型,来做判断的方式 if (Request.Files.Count > 0) { //这里只测试上传

js jquery 上传文件格式大小判断简单总结

大家好我是床前明月光,疑是地上霜 // html <a href="javascript:;" class="file">添加附件 <input type="file" name="" id="fileId" onchange="upload()"></a> /**判断上传文件文件格式**/var filePath ="";var

ASP.NET实现文件的上传和下载

最近做的一个高校网站中涉及到了上传和下载文件的需求(具体需求为:网站公布的通知,在后台要能给每个通知添加附件,在前台要能显示并下载附件),之前只是学习过关于上传的理论,这里探索了一下下,与大家分享一下成果. 事先说明:这个例子采用的是简单的三层结构,层与层之间是用实体来传值.而且这种方法不但在本地测试时可以成功,并且可以部署在服务器上,供异地上传和下载文件. 专门做了一个数据库表用来存储附件的相关信息: 字段 说明 AnnexID 附件ID AnnexName 附件名称 AnnexAddress

ASP.NET(C#)FileUpload实现上传限定类型和大小的文件到服务器&lt;from Copying&gt;

2009-02-15 11:52:54|  分类: 默认分类 |  标签: |举报 |字号大中小 订阅 ASP.NET(C#)FileUpload实现上传限定类型和大小的文件到服务器 2009-01-07 23:29 上传文件有两个主要的目的地,一个是服务器,另一个是数据库,ASP.NET内置了FileUpload这个上传控件,文本框显示用户选择的文件的全名. 其属性主要包括: ContenLength:上传文件大小,单位:字节 FileName:文件名称 HasFile:是否选择了文件 例子:

js判断上传文件大小

<!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="content-typ

兼容各浏览器的js判断上传文件大小

由于项目需要,在网上找了一个JS判断上传文件大小的程序,经测试兼容IE6-9,Firefox10,Opera11.6,safari5.1,chrome17 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>js判断上传文件的大小</titl

判断上传文件是否是图片文件

方法一:用image对象判断是否为图片 /// <summary> /// 判断文件是否为图片 /// </summary> /// <param name="path">文件的完整路径</param> /// <returns>返回结果</returns> public Boolean IsImage(string path) { try { System.Drawing.Image img = System.D

asp.net 中 UEditor 图片上传失败的处理方法

1.0 找到 net 文件夹下面的 web.config 配置文件,注释掉如下的两句: 2.0 Uploader文件默认属性为编译,将其属性改为内容以后重新运行程序,图片上传成功. 3.0 删除 imageUp.ashx 中的 <%@ Assembly Src="Uploader.cs" %> asp.net 中 UEditor 图片上传失败的处理方法

JS判断上传文件类型

/*   * 判断图片类型   */    function checkImgType(ths){        if (ths.value == "") {            alert("请上传图片");            return false;        } else {            if (!/\.(gif|jpg|jpeg|png|GIF|JPG|PNG)$/.test(ths.value)) {                a