Ubuntu下VirtualBox的vdi文件克隆辦法。本站提示廣大學習愛好者:(Ubuntu下VirtualBox的vdi文件克隆辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是Ubuntu下VirtualBox的vdi文件克隆辦法正文
圖片上傳常用的類型判別辦法有這麼幾種---截取擴展名、獲取文件ContentType (MIME) 、讀取byte來判別(這個什麼叫法來著?)。前兩種都有平安問題。容易被上傳不平安的文件,如木馬什麼的。第1種截取文件擴展名來判別的辦法很分明不安 全,第2種ContentType MIME可以偽造,所以用ContentType來判別其實也不平安。建議采用第3種。
C#演示:
1.截取擴展名來做判別,不可取。
if (Request.Files.Count > 0) { //這裡只測試上傳第一張圖片file[0] HttpPostedFile file0 = Request.Files[0]; string ext = file0.FileName.Substring(file0.FileName.LastIndexOf('.') + 1);//文件擴展名string[] fileTypeStr = { "jpg", "gif", "bmp", "png" }; if (fileTypeStr.Contains(ext)) { file0.SaveAs(Server.MapPath("~/" + file0.FileName));//保管文件 } else { Response.Write("圖片格式不正確" + ext); } }
2.判別ContentType (MIME) ,比第1種方案平安。但其實ContentType是可偽造的,所以也不夠平安。
if (Request.Files.Count > 0) { //這裡只測試上傳第一張圖片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) { //這裡只測試上傳第一張圖片file[0] HttpPostedFile file0 = Request.Files[0]; //轉換成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)//圖片數據能否為空 { fileFlag = fileByte[0].ToString() + fileByte[1].ToString(); } string[] fileTypeStr = { "255216", "7173", "6677", "13780" };//對應的圖片格式jpg,gif,bmp,pngif (fileTypeStr.Contains(fileFlag)) { file0.SaveAs(Server.MapPath("~/" + file0.FileName)); } else { Response.Write("圖片格式不正確:" + fileFlag); } }
以上內容就是本文給大家敘說的http圖片上傳平安性問題 依據ContentType (MIME) 判別其實不精確、不平安,希望大家喜歡。