主頁 > 知識(shí)庫 > ASP.NET通過byte正確安全的判斷上傳文件格式

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

熱門標(biāo)簽:科大訊飛語音識(shí)別系統(tǒng) 集中運(yùn)營管理辦法 阿里云 硅谷的囚徒呼叫中心 地方門戶網(wǎng)站 服務(wù)器配置 百度競價(jià)排名 網(wǎng)站排名優(yōu)化

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" };//對(duì)應(yīng)的圖片格式j(luò)pg,gif,bmp,png
  if (fileTypeStr.Contains(fileFlag))
  {
    file0.SaveAs(Server.MapPath("~/" + file0.FileName));
  }
  else
  {
    Response.Write("圖片格式不正確:" + fileFlag);
  }
}

常見文件類型對(duì)應(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
您可能感興趣的文章:
  • asp.net FileUpload控件實(shí)現(xiàn)文件格式判斷與文件大小限制
  • 概述.net開發(fā)過程中Bin目錄下面幾種文件格式

標(biāo)簽:甘孜 威海 隨州 梧州 開封 西雙版納 廣西 烏蘭察布

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《ASP.NET通過byte正確安全的判斷上傳文件格式》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 上一篇:解決ASP.NET中/應(yīng)用程序中的服務(wù)器錯(cuò)誤的方法

    下一篇:ASP.NET 5已終結(jié),迎來ASP.NET Core 1.0和.NET Core 1.0

    收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266