是我使用jQuery保护的Web服务?专家需要帮助

时间:2011-07-22 05:33:53

标签: jquery web-services security

我是初学者,使用带有jquery的webservices,所以请原谅dumm问题。

故事就是这样的。我有一个新的网站,我使用jQuery构建,调用webservices作为一些ajax调用的一部分,例如:

$.ajax({
                     type: "POST",
                     url: "/WSProxy.asmx/AddressLookup",
                     data: "{'query': '" + $('#location').val() + "'}",
                     contentType: "application/json; charset=utf-8",
                     dataType: "json",
                     success: function (data) {
                         $("#location").autocomplete(
                             {
                                 minLength:3,
                                 source: data.d
                             });
                     }

                 });

现在,如果我做对了,现在每个人都知道我有一个可以通过http://www.mywebsite.com/WSProxy.asmx访问的web服务,并且基本上查询正在公开的函数并按照他的喜好调用它们。我的问题:

  1. 是真的吗?我的ajax /查询代码暴露了我的webservices?
  2. 我可以阻止/限制未从我的网站获取的电话,如果是,怎么办?
  3. 我的网站使用.NET / C#作为后端/中间层平台,Web服务也是用C#编写的。

    请帮忙。

5 个答案:

答案 0 :(得分:1)

  1. 是真的吗?我的ajax /查询代码暴露了我的webservices?
  2. 是的,任何Javascript和HTML都会被曝光。

    1. 可以阻止/限制未从我的网站上获取的电话,如果是, 如何?
    2. 是和否。您可以参考传入的HTTP请求网址,但可以伪造。

      因此规则是不要试图暴露任何敏感的部分。

答案 1 :(得分:1)

你必须保护服务本身。

  • 通过在负责安全性的服务中添加经过身份验证的调用者的会话,将所有安全性放在那里。

  • 对于通过javascript公开的每项服务调用,您必须通过身份验证服务检查该人是否有任何会话,如果没有阻止它....

答案 2 :(得分:0)

是的,任何人都可以打电话给你的网络服务(这很容易学习,只需查看firebug /开发人员工具,看看浏览器的作用)。

您可以让用户在调用Web服务之前登录。或者给他一个令牌(比如CSRF令牌)。或者设计一些签名机制(但是你必须知道他将使用哪些参数)。

答案 3 :(得分:0)

任何看着你的AJAX调用的人都会看到你的web服务使用的地址和格式,所以是的,提供它会暴露它(没有多少指向未公开的服务)。您可以在不访问您的站点的情况下更难以使用它(例如,您可以在HTML代码中添加令牌并要求它出现在Web服务调用中),但不能完全阻止某人编写将从中下载页面的代码您的网站,然后使用您的服务,同时假装是一个浏览该页面的浏览器。

答案 4 :(得分:0)

基本上,您向Javascript和HTML投入的一切都会暴露出来。不管怎么说,你可以保护它。您可以检查请求的引用者以确保它来自您的站点,但如果使用Web服务器,则可以伪造引用者。 我们在类似项目中做的另一件事是在AJAX调用中获取webservice的url,以便它不会出现在源代码中。虽然它是愚蠢的,它可能会阻止一些低级别的数据采集器。

如果它不是公共资源,您可以添加一些登录。