我是初学者,使用带有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服务,并且基本上查询正在公开的函数并按照他的喜好调用它们。我的问题:
我的网站使用.NET / C#作为后端/中间层平台,Web服务也是用C#编写的。
请帮忙。
答案 0 :(得分:1)
是的,任何Javascript和HTML都会被曝光。
是和否。您可以参考传入的HTTP请求网址,但可以伪造。
因此规则是不要试图暴露任何敏感的部分。
答案 1 :(得分:1)
你必须保护服务本身。
通过在负责安全性的服务中添加经过身份验证的调用者的会话,将所有安全性放在那里。
对于通过javascript公开的每项服务调用,您必须通过身份验证服务检查该人是否有任何会话,如果没有阻止它....
答案 2 :(得分:0)
是的,任何人都可以打电话给你的网络服务(这很容易学习,只需查看firebug /开发人员工具,看看浏览器的作用)。
您可以让用户在调用Web服务之前登录。或者给他一个令牌(比如CSRF令牌)。或者设计一些签名机制(但是你必须知道他将使用哪些参数)。
答案 3 :(得分:0)
任何看着你的AJAX调用的人都会看到你的web服务使用的地址和格式,所以是的,提供它会暴露它(没有多少指向未公开的服务)。您可以在不访问您的站点的情况下更难以使用它(例如,您可以在HTML代码中添加令牌并要求它出现在Web服务调用中),但不能完全阻止某人编写将从中下载页面的代码您的网站,然后使用您的服务,同时假装是一个浏览该页面的浏览器。
答案 4 :(得分:0)
基本上,您向Javascript和HTML投入的一切都会暴露出来。不管怎么说,你可以保护它。您可以检查请求的引用者以确保它来自您的站点,但如果使用Web服务器,则可以伪造引用者。 我们在类似项目中做的另一件事是在AJAX调用中获取webservice的url,以便它不会出现在源代码中。虽然它是愚蠢的,它可能会阻止一些低级别的数据采集器。
如果它不是公共资源,您可以添加一些登录。