欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2016年03月28日 10:28:54   作者:學(xué)習(xí)也休閑  
本文介紹一種更安全的方式上傳圖片,他能有效的防止一些通過修改文件后綴或MIME來偽造的圖片的上傳,從而保證服務(wù)器的安全,希望對大家有所幫助。

ASP.NET中在判斷文件格式時(shí),我們以前常用的方法就是通過截取擴(kuò)展名來做判斷,或者通過ContentType (MIME) 判斷,這兩種方法都不太安全,因?yàn)檫@兩種方式用戶都可以偽造,從而達(dá)可以攻擊網(wǎng)站,實(shí)現(xiàn)給網(wǎng)站掛馬等目的。

下面介紹通過byte獲取文件類型,來做判斷的方式

if (Request.Files.Count > 0)
{
  //這里只測試上傳第一張圖片file[0]
  HttpPostedFile file0 = Request.Files[0];
    
  //轉(zhuǎn)換成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)//圖片數(shù)據(jù)是否為空
  {
    fileFlag = fileByte[0].ToString() + fileByte[1].ToString();         
  }
  string[] fileTypeStr = { "255216", "7173", "6677", "13780" };//對應(yīng)的圖片格式j(luò)pg,gif,bmp,png
  if (fileTypeStr.Contains(fileFlag))
  {
    file0.SaveAs(Server.MapPath("~/" + file0.FileName));
  }
  else
  {
    Response.Write("圖片格式不正確:" + fileFlag);
  }
}

常見文件類型對應(yīng)的byte數(shù)據(jù)

199196 sqlite數(shù)據(jù)庫文件
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

相關(guān)文章

最新評論