ASP.NET通過byte正確安全的判斷上傳文件格式
ASP.NET中在判斷文件格式時,我們以前常用的方法就是通過截取擴(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 |
相關(guān)文章
ASP.NET WebAPI連接數(shù)據(jù)庫的方法
這篇文章主要為大家詳細(xì)介紹了ASP.NET WebAPI連接數(shù)據(jù)庫的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-08-08
未將對象引用設(shè)置到對象的實(shí)例 (System.NullReferenceException)
System.NullReferenceException:未將對象引用設(shè)置到對象的實(shí)例,這是一個新鳥,中鳥,老鳥都避不開的錯誤2012-03-03
Asp.net?core?使用SignalR推送消息過程詳解
ASP.NET?Core?SignalR?是一個開放源代碼庫,可用于簡化向應(yīng)用添加實(shí)時?Web?功能。?實(shí)時?Web?功能使服務(wù)器端代碼能夠?qū)?nèi)容推送到客戶端,本文重點(diǎn)給大家介紹Asp.net?core?使用SignalR推送消息,感興趣的朋友一起看看吧2022-03-03
解決asp.net mvc UpdateModel更新對象后出現(xiàn)null問題的方法
這篇文章主要介紹了解決asp.net mvc UpdateModel 更新對象后出現(xiàn)null問題的方法,需要的朋友可以參考下2015-11-11
docker部署Asp.net core應(yīng)用的完整步驟
這篇文章主要給大家介紹了關(guān)于docker部署Asp.net core應(yīng)用的完整步驟,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Asp.net core具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05
ASP.NET技巧:同時對多個文件進(jìn)行大量寫操作對性能優(yōu)化
ASP.NET技巧:同時對多個文件進(jìn)行大量寫操作對性能優(yōu)化...2006-09-09
.NET驗(yàn)證組件Fluent Validation使用指南
本文介紹了.NET驗(yàn)證組件Fluent Validation,并通過實(shí)例告訴我們這個驗(yàn)證組件的使用方法,以及與asp.net mvc驗(yàn)證庫的整合方案,這里推薦給有相同需求的小伙伴2014-11-11

