2009-06-09 90 views
2

我一直使用的ScriptManager来处理所有AJAX调用,但我开始扩大,并正在使用jQuery和JSON消耗的ASP.NET 3.5 Web服务玩耍。我正在使用标准的jQuery调用,你可以在下面看到,这很好用。我担心安全问题,以及如何确保我不会通过放弃Scriptmanager来打开任何门。任何信息都是值得赞赏的,我在网上发现的更多的是关于实现而不是安全。安全与ASP.NET Web服务使用jQuery

$.ajax({ 
    type: "POST", 
    url: "Webservices/Service.asmx/HellowWorld", 
    data: "{}", 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function(msg) { 
     alert(msg.d); 
    } 
}); 

UPDATE:在希望有人能提供一些信息碰碰这一点。

我希望只允许通过认证的用户才能访问这个服务,我在MVC使用ASP.NET会员服务,并希望确保我的jQuery AJAX(JSON)呼叫正在被认证的用户执行。任何信息表示赞赏。

回答

0

我一直在寻找在这个问题上是如何处理上的Web服务调用的安全性。回答:如果不用is传递某种形式的认证数据,就无法自动认证远程用户。

在这种情况下我传递包含数据然后我使用对用户进行认证一个加密的令牌。令牌给他们通过。

如果有更好/更安全的方法,我会开放。

0

在安全性方面,有使用ScriptManager生成客户端代理来调用Web服务,或直接使用jQuery之间没有本质的区别。它们最终都会使用纯文本有效内容向服务器生成HTTP请求。

如果你所关心的信息和/或运输的安全性,你需要看看使用SSL来加密客户端和服务器之间的传输信道。

+0

我明白了,我知道不允许GET请求。我更关注跨域调用等。我正在处理Web方法中的SQL注入数据验证。数据本身并不敏感。我现在只想让我的Web方法可以访问其他服务器调用。 希望是有道理的。 谢谢 – 2009-06-09 17:44:54

0

我解决这个问题的方法是在web服务中构建一个验证子句。

 MembershipUser u =Membership.GetUser(HttpContext.Current.User.Identity.Name); 
    if (u.IsOnline) 
    { 

     //do work 
    } 

可能不是解决问题的最佳方法,它可能是混乱的。但它为我工作。最理想的是,如果你可以在调用中而不是在服务中检查HttpContext,但我一直无法弄清楚如何做到这一点。