首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

asp.net中用ajax请求webservice,怎么解决别人恶意调用

2013-07-20 
asp.net中用ajax请求webservice,如何解决别人恶意调用这是一个web在线聊天,游客聊天照样可以请求webservic

asp.net中用ajax请求webservice,如何解决别人恶意调用
这是一个web在线聊天,游客聊天照样可以请求webservice,传输的数据都是前台给传的json格式,数据都是可见的,该怎么解决别人恶意调用呢,请大家帮帮忙啊,小弟在此先谢谢了,急需解决,求帮忙,在线等
.aspx代码:
function sendMsgAjax(ssid,sid,rid,con){
           $.ajax({
             type:"post",
             url:"Common.asmx/SendMsgNew",
             data:"{"sessionId":""+ssid+"","senderId":""+sid+"","reciverId":""+rid+"","msgContent":""+con+""}",
             contentType:"application/json",
             dataType:"json",
             success:function(data){      
                    alert("消息发送成功");                       
             },
             error:function(){
                   alert("error");
             }            
            });


webservice代码:
        [WebMethod]
        public int SendMsgNew(int sessionId,int senderId, int reciverId, string msgContent)
        {
            BLL = new ChatOnlineBLL();
            int result = BLL.AddChatMsgNew(sessionId,senderId, reciverId, msgContent);
            return result;
        }

ASP.NET Ajax Web服务 聊天工具


[解决办法]

[WebMethod]
    public string HelloWorld() {
            string server_v1 ="";
            if(HttpContext.Current.Request.UrlReferrer!=null)
            {
                server_v1 = Convert.ToString(HttpContext.Current.Request.UrlReferrer.Host);
            }
            string server_v2 = Convert.ToString(HttpContext.Current.Request.Url.Host);
            if (server_v1.Equals(server_v2) && !server_v2.Equals(""))
            {
                return "Hello World";
            }
            else
            {
                return "error";
            }
    }
    

这样也不是 安全。。可以伪造UrlReferrer,
在数据入库时可以先验证一下reciverId是否存在以及不是 senderId
同时限制2秒内允许发一次或验证senderId当前几小时以内发的信息数量超过多少禁止其发送(这个数量需
考量,恶意灌水的量级)
个人觉得 只能尽量防止恶意添加

[解决办法]
配置authentication(身份认证,用户名,密码登录),并编程实现自己的authorization(不同用户的不同访问权限)。
这都是可以配置成针对特定URL的,包括你的web service。如果别人没有登录或者没有访问权限,都不可能调用你的web service,地址栏输入都不行。
另外,用http的话,聊天的内容无法加密,即使加密了,由于你的客户端是javascript写的,解密算法是暴露的,所以别人可以很容易解密。除非使用依赖ssl/tls算法的https,那样才能保证聊天内容无法被截获和解密。不过受信任的https授权证书是要花钱买的。
[解决办法]
在客户端调用的话,好像没有绝对的安全,因为你的实现别人都可以看得到。

热点排行