文件上传之简单验证方式
前排图片马:
copy 一张图片.png/b+一句话木马.php 生成图片名称.png
客户端的验证:
JavaScript的验证,即验证部分在前端,这是简单的,因为我们只需要禁用浏览器的JavaScript特效就好。比如:
<script type="text/javascript"> function checkFile() { var file = document.getElementsByName('upload_file')[0].value; //获取到文件名 if (file == null || file == "") { alert("请选择要上传的文件!"); return false; } var allow_ext = ".jpg|.png|.gif"; //定义允许上传的文件类型 var ext_name = file.substring(file.lastIndexOf(".")); //提取上传文件的类型。 //通过lastIndexOf取到“.”的索引,再使用substring函数截取 .后缀名 if (allow_ext.indexOf(ext_name) == -1) { //如果 allow_ext 中没有 ext_name字符串,则返回-1 var errMsg = "该文件不允许上传,请上传" + allow_ext + "类型的文件,当前文件类型为:" + ext_name; alert(errMsg); return false; } //判断上传文件类型是否允许上传 } </script>
服务端的验证:
服务端的验证就会比较安全,相对应的绕过的难度也会增加,因为猜不到源码,不过要小心git源码泄露。比如
服务端MIME类型验证
content-Type
服务器文件内容验证 ( 文件头(文件幻数) 、文件加载检测 ):服务器文件内容验证-文件头:
图片格式往往不是根据文件后缀名去做判断的。文件头是文件开头的一段二进制,不同的图片类型,文件头是不同的。文件头又称文件幻数。
常见文件幻数
JPG: FF D8 FF EO 00 10 4A 46 49 46.
GIF:47 49 46 3839 61(GIF89a).
PNG:89 50 4E 47
本文来自博客园,作者:夜未至,转载请注明原文链接:https://www.cnblogs.com/wushiyiwuzhong/articles/wushiyiwuzhong.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构