程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> ASP.NET基礎 >> ASP.NET通過byte正確安全的判斷上傳文件格式

ASP.NET通過byte正確安全的判斷上傳文件格式

編輯: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數據

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
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved