国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

http圖片上傳安全性問題 根據(jù)ContentType (MIME) 判斷其實(shí)不準(zhǔn)確、不安全

2020-01-24 01:27:21
字體:
供稿:網(wǎng)友

圖片上傳常用的類型判斷方法有這么幾種---截取擴(kuò)展名、獲取文件ContentType (MIME) 、讀取byte來判斷(這個(gè)什么叫法來著?)。前兩種都有安全問題。容易被上傳不安全的文件,如木馬什么的。第1種截取文件擴(kuò)展名來判斷的方法很明顯不安 全,第2種ContentType MIME可以偽造,所以用ContentType來判斷其實(shí)也不安全。建議采用第3種。

C#演示:

1.截取擴(kuò)展名來做判斷,不可取。

if (Request.Files.Count > 0){  //這里只測(cè)試上傳第一張圖片file[0]  HttpPostedFile file0 = Request.Files[0];  string ext = file0.FileName.Substring(file0.FileName.LastIndexOf('.') + 1);//文件擴(kuò)展名string[] fileTypeStr = { "jpg", "gif", "bmp", "png" };  if (fileTypeStr.Contains(ext))  {    file0.SaveAs(Server.MapPath("~/" + file0.FileName));//保存文件  }  else  {    Response.Write("圖片格式不正確" + ext);  }}

2.判斷ContentType (MIME) ,比第1種方案安全。但其實(shí)ContentType是可偽造的,所以也不夠安全。

if (Request.Files.Count > 0){//這里只測(cè)試上傳第一張圖片file[0]  HttpPostedFile file0 = Request.Files[0];  string contentType = file0.ContentType;//文件類型string[] fileTypeStr = { "image/gif","image/x-png","image/pjpeg","image/jpeg","image/bmp"};  if (fileTypeStr.Contains(contentType))  {    file0.SaveAs(Server.MapPath("~/" + file0.FileName));  }  else  {    Response.Write("圖片格式不正確" + contentType);  }}

3.通過byte獲取文件類型,來做判斷。

if (Request.Files.Count > 0){//這里只測(cè)試上傳第一張圖片file[0]  HttpPostedFile file0 = Request.Files[0];  //轉(zhuǎn)換成byte,讀取圖片MIME類型  Stream stream;  //int contentLength = file0.ContentLength; //文件長度byte[] fileByte = newbyte[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,pngif (fileTypeStr.Contains(fileFlag))  {    file0.SaveAs(Server.MapPath("~/" + file0.FileName));  }  else  {    Response.Write("圖片格式不正確:" + fileFlag);  }}

以上內(nèi)容就是本文給大家敘述的http圖片上傳安全性問題 根據(jù)ContentType (MIME) 判斷其實(shí)不準(zhǔn)確、不安全,希望大家喜歡。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 裕民县| 许昌县| 安顺市| 收藏| 渝北区| 银川市| 丹东市| 西畴县| 蒙山县| 巴东县| 大洼县| 岐山县| 会理县| 阿拉善盟| 璧山县| 泰来县| 祁门县| 明光市| 蒲城县| 本溪市| 隆昌县| 颍上县| 玉门市| 鲁山县| 岳普湖县| 响水县| 台前县| 从化市| 榆中县| 柳林县| 松溪县| 沅江市| 临澧县| 舒兰市| 图们市| 布尔津县| 淮南市| 新郑市| 寻甸| 南汇区| 湖北省|