码迷,mamicode.com
首页 > Web开发 > 详细

jquery ajax 调用.net 一般处理文件安全问题

时间:2015-06-24 18:18:20      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:

最近在维护一个客户的积分网站的时候,发现了这样一个问题,有人通过.ashx的漏洞,往我们数据库里面插入短信发送数据,导致我们短信费用有了一定的损失

一般处理文件 也就是后缀名为 .ashx 的文件

一般处理文件 我们主要用于与前段jquery ajax 做异步调用,例如:

$.ajax({

                    sync: false,

                    dataType: "text",

                    url: "../Handler/HandlerVPhone.ashx",

                    data: { txtPhone: txtPhoneValue },

                    success: function (result) {

 

                    },

                    error: function (result) {

                        alert("验证手机号是否已注册出错!");

                    }

                });

 

 $.ajax({

                    sync: false,

                    dataType: "text",

                    url: "../Handler/HandlerSmsService.ashx",

                    data: { txtPhone: txtPhoneValue, type: "Get", prType: 1 },

                    success: function (result) {

                       

                       

                    },

                    error: function (result) {

                        alert("手机验证码发送出错!");

                        return false;

                    }

                });

以上是做手机号短信发送,调用短信接口,往数据库里面插入值

这些都可以被别人调用,别人只需要在这些一般处理文件的前面加上域名,然后在后面加上参数就可以在其他程序上访问了

例如:

http://www.xxx.com/Handler/HandlerVPhone.ashx?txtPhone=xxxxxxxxxxx 

http://www.xxx.com/Handler/HandlerSmsService.ashx?txtPhone=xxxxxxxxxxx&type=Get&prType=1 

 

解决的办法:

 

.net  页面后台,通过GUID 产生出唯一值,赋值给session,   前台一般处理文件参数传值到后台做验证

 Session["chkcode"] = Guid.NewGuid().ToString();

 hdnchkcode.Value = Session["chkcode"].ToString();

前台ajax 给参数

 $.ajax({

                    sync: false,

                    dataType: "text",

                    url: "../Handler/HandlerSmsService.ashx",

                    data: { txtPhone: txtPhoneValue, type: "Get", prType: 1, chkcode: hdnchkCode },

                    success: function (result) {

                       

                    },

                    error: function (result) {

                        alert("手机验证码发送出错!");

                    }

                });

一般处理文件里面内容做判断:

  if (context.Session["chkcode"] != null

                && context.Session["chkcode"].ToString() == context.Request.QueryString["chkcode"])

            {

            }

            else

            {

            }

这样就能避免别人通过调用你的一般处理文件,往你的数据库插入值啦,,

jquery ajax 调用.net 一般处理文件安全问题

标签:

原文地址:http://www.cnblogs.com/ashxSafety/p/4598300.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!