如何将跨域web服务的使用限制为特定的请求



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

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

问题是如何保护此web服务。。。并将消费限制在某些已定义的应用程序或已预定义到web服务的请求?

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

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

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

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

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

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

相关内容

  • 没有找到相关文章

最新更新