ASP.NET文件上传:如何确保上传的文件真的是JPEG?
发布时间:2020-12-16 07:34:03 所属栏目:asp.Net 来源:网络整理
导读:犯罪分子可以伪造他上传的文件的内容类型.所以,如果我通过我的页面在服务器上收到文件,我不能只检查它的MIME类型和文件扩展名.有没有可靠的方法来检查上传的文件实际上是JPEG,GIF还是PNG?我需要拒绝所有其他格式.我可以尝试一点一点地读取文件,但我在寻找什
犯罪分子可以伪造他上传的文件的内容类型.所以,如果我通过我的页面在服务器上收到文件,我不能只检查它的MIME类型和文件扩展名.有没有可靠的方法来检查上传的文件实际上是JPEG,GIF还是PNG?我需要拒绝所有其他格式.我可以尝试一点一点地读取文件,但我在寻找什么?感谢您的任何建议或想法!
解决方法
最简单的方法是检查输入流的标题并查找特定的签名:
> JPEG:十六进制的FF D8 ASP.NET中的示例 bool isValid = false; char[] header = new char[10]; StreamReader sr = new StreamReader(Request.InputStream); sr.Read(header,10); // check if JPG if (header[0] == 0xFF && header[1] == 0xD8) { isValid = true; } // check if GIF else if (header[0] == 'G' && header[1] == 'I' && header[2] == 'F') { isValid = true; } // check if PNG else if (header[0] == 137 && header[1] == 80 && header[2] == 78 && header[3] == 71 && header[4] == 13 && header[5] == 10 && header[6] == 26 && header[7] == 10) { isValid = true; } 当然你必须处理异常 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – 使用OpenOAuthProvider通过Google进行身份验证
- 如何配置在生产服务器上运行的ASP.NET应用程序?
- asp.net – 过程或函数“”需要参数“”,这是未提供的
- asp.net – 如何修复System.Data.SqlClient.SqlException:
- asp.net-mvc – 如何在特定的mvc3控制器/动作中授权用户角色
- asp.net – 如何序列化LINQ-to-SQL惰性列表
- asp.net-mvc – 如何将我的视图模型绑定到jqGrid?
- asp.net – 为什么WebMethod访问会话状态没有EnableSession
- ASP.Net Web API在VS中正确显示但提供HTTP500
- asp.net-mvc – ASP.NET MVC 3 RC和Azure?
推荐文章
站长推荐
- asp.net-mvc – 在MVC 4中获取表头名称的最佳方法
- asp-classic – 使用SMTP身份验证的经典ASP发送电
- 初识ABP vNext(12):模块的独立运行与托管
- asp.net-mvc-2 – AuthorizeAttribute MVC 2中的
- views – 我应该在asp.net MVC6中为我的所有图像
- asp.net-mvc-3 – 有没有办法使用@ Html.HiddenF
- entity-framework – 术语’scaffold-dbcontext’
- asp.net-mvc – NET 3.5 – MVC PetShop应用程序
- asp.net – TypeError:theForm.submit不是asp:
- 在ASP.NET应用程序中托管的WCF服务中使用Autofac
热点阅读