ASP.NET中在判断文件格式时,我们以前常用的方法就是通过截取扩展名来做判断,或者通过ContentType (MIME) 判断,这两种方法都不太安全,因为这两种方式用户都可以伪造,从而达可以攻击网站,实现给网站挂马等目的。
下面介绍通过byte获取文件类型,来做判断的方式
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
if (Request.Files.Count > 0)
{
//这里只测试上传第一张图片file[0]
HttpPostedFile file0 = Request.Files[0];
//转换成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) //图片数据是否为空
{
fileFlag = fileByte[0].ToString() + fileByte[1].ToString();
}
string [] fileTypeStr = { "255216" , "7173" , "6677" , "13780" }; //对应的图片格式jpg,gif,bmp,png
if (fileTypeStr.Contains(fileFlag))
{
file0.SaveAs(Server.MapPath( "~/" + file0.FileName));
}
else
{
Response.Write( "图片格式不正确:" + fileFlag);
}
}
|
常见文件类型对应的byte数据
199196 | sqlite数据库文件 |
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 |
相关文章
猜你喜欢
- 个人服务器网站搭建:如何选择适合自己的建站程序或框架? 2025-06-10
- 64M VPS建站:能否支持高流量网站运行? 2025-06-10
- 64M VPS建站:怎样选择合适的域名和SSL证书? 2025-06-10
- 64M VPS建站:怎样优化以提高网站加载速度? 2025-06-10
- 64M VPS建站:是否适合初学者操作和管理? 2025-06-10
TA的动态
- 2025-07-10 怎样使用阿里云的安全工具进行服务器漏洞扫描和修复?
- 2025-07-10 怎样使用命令行工具优化Linux云服务器的Ping性能?
- 2025-07-10 怎样使用Xshell连接华为云服务器,实现高效远程管理?
- 2025-07-10 怎样利用云服务器D盘搭建稳定、高效的网站托管环境?
- 2025-07-10 怎样使用阿里云的安全组功能来增强服务器防火墙的安全性?
快网idc优惠网
QQ交流群
您的支持,是我们最大的动力!
热门文章
-
2025-05-25 88
-
2025-05-25 86
-
2025-05-29 27
-
2025-05-25 66
-
2025-06-04 33
热门评论