• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    ASP.NET通过byte正确安全的判断上传文件格式

    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数据

    199196 sqlite数据库文件
    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
    8297 rar
    01 accdb,mdb
    7790 exe,dll
    5666 psd
    255254 rdp
    10056 bt种子
    64101 bat
    255254 csv
    3780 pdf
    您可能感兴趣的文章:
    上一篇:解决ASP.NET中/应用程序中的服务器错误的方法
    下一篇:ASP.NET 5已终结,迎来ASP.NET Core 1.0和.NET Core 1.0
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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