当前位置:首页 >> 网络通讯 >> 网络安全 >> 内容

.net文件上传漏洞代码实例及修复方案

时间:2013/4/19 12:10:00 作者:平凡之路 来源:xuhantao.com 浏览:

这时在作测试时扒下来的代码有的丢掉了,只有个修补方案。大家凑合着看吧。东西很简单。

 

string str = filename.Substring(filename.LastIndexOf(".") + 1, 3);

                if (str == "png" || str == "gif" || str == "jpg" || str == "jpeg" || str == "PNG" || str == "GIF" || str == "JPG" || str == "JPEG") 涛涛电脑知识技巧

                {

                    string sfd = savePath;

 

 

                    string sf = filename.Substring(0, filename.LastIndexOf(".")) + "_" + DateTime.Now.ToString("yyMMddhhmmss") + "." + str;

                    savePath += filename + sf;

                    this.hidurl.Value = "SecFile/" + sf;//保存URL这段上传代码,验证文件名是从最后“点”算起的,也就是提交后缀为gif就行,在往下看在生成新文件名时也是用的lastindexof()函数进行的截取,之后保存的,由于服务器是IIS6.0直接POST文件名为1.asp;1.jpg就ok。修复代码:[code="csharp"]string sf =DateTime.Now.ToString("yyMMddhhmmss") + "." + str;[/code]-----<font face="宋体 "><code id="code1">fileurl = context.Request["folder"];</code></font>

从请求头里取文件夹地址。iis6直接截断或分号

 

------

<font face="宋体 "><code id="code2">protected void SaveImg(HttpPostedFile file,string type,string roomid,string roomname,string btntype)

    {

        #region  保存图片

        string imgname = Path.GetFileName(file.FileName).ToLower();

        if (imgname.Length==0)

        {

            if (btntype=="edit")

            {

                Response.Write("{ \"result\":\"" + AddMode("", roomid, roomname) + "\"}");

                return;

            }

            Response.Write("{ \"result\":\"-2\"}");

            return;

        }

        imgname = imgname.Substring(0, imgname.Length - 4);

        string PicType = Path.GetExtension(file.FileName).ToLower();        //获得图片的扩展名

        //if (PicType == ".jpg" || PicType == ".gif" || PicType == ".jpeg" ||PicType ==".bmp" ){

        //扩展名检测

            string phsavename = string.Empty;

            //客户端

            string phserver = Server.MapPath("roomlogpic" + "/")  + "/roomImage/";

            string saveserver = "";

            if (Directory.Exists(phserver) == false)  //如果不存在就创建file文件夹

            {

                Directory.CreateDirectory(phserver);

            }

            try

            {

                int result = 0;

                switch (type)

                {

                    case "delete"://删除临时

                        phsavename = DateTime.Now.Year + "" + DateTime.Now.Month + "" + DateTime.Now.Day + PicType;

                        System.IO.File.Delete(phserver + Path.GetFileName(file.FileName).ToLower());

                        break;

                    case "save":  //上传

                        phsavename = imgname+"_"+DateTime.Now.Year + "" + DateTime.Now.Month + "" + DateTime.Now.Day + PicType; 

                        //没有任何过滤下面是修补代码

相关文章
  • 没有相关文章
共有评论 0相关评论
发表我的评论
  • 大名:
  • 内容:
  • 徐汉涛(www.xuhantao.com) © 2024 版权所有 All Rights Reserved.
  • 部分内容来自网络,如有侵权请联系站长尽快处理 站长QQ:965898558(广告及站内业务受理) 网站备案号:蒙ICP备15000590号-1