如何限制跨域Web服务对某些请求的消耗

时间:2013-11-21 00:55:20

标签: ajax wcf web-services security cross-domain

如果我在.NET中有WCFASMX的Web服务,则在服务器上发布此服务时,您将无法从托管它的应用程序以外的任何位置访问它,除非您更改安全设置以允许跨域访问。

现在,如果地址已知,任何应用程序都可以使用此Web服务,对吗? 例如,您可以在本地浏览器中调用此服务器Web服务并查看它的作用...

问题 如何保护此Web服务...并限制对已定义到Web服务的某些已定义应用程序或请求的使用?

2 个答案:

答案 0 :(得分:3)

现代浏览器默认禁止跨域访问。通过利用CORS规范定义的Access-Control-Allow-Origin标头,可以有条件地放宽这一点。具体来说,来自现代浏览器的跨域XHR请求将始终包含Origin标头,您的服务器代码可以使用该标头根据发出请求的页面域过滤请求。您的服务器可以拒绝请求,例如,通过响应401(未授权的)响应状态),或通过返回Access-Control-Allow-Origin标头与Origin中找到的标头相同的值来表示请求。请求标题。

请注意,通过CORS轻松访问您的系统是安全的 - 与使用某种形式的身份验证限制访问非常不同。在声明其来源时,您依赖客户表现良好,但这并非总是有效的假设。

答案 1 :(得分:2)

您需要为您的网络服务添加身份验证。因此,对每个方法的请求都将通过cookie中发送的令牌进行身份验证。

对于网站,这可以使用网站其余部分使用的身份验证Cookie。如果用户必须登录移动应用程序,那么您还需要对其进行身份验证。

这会阻止任何无权访问您的网站或移动应用程序的人使用您的网络服务。

我还强烈建议使用TLS(SSL)保护您的网站服务和网站,以便通过HTTPS访问所有内容。