我有一个AngularJS应用程序(使用ASP.NET Web API作为后端),不需要用户进行身份验证(应用程序没有登录)。我想确保AngularJS应用程序调用的REST API方法只能从应用程序调用。我显然不能使用基于令牌的身份验证。
如果不采取任何特殊措施,可以使用浏览器地址栏或编写调用它们的桌面应用程序自由调用REST API方法。只有当浏览器通过来自具有其他来源的站点的HTML页面调用API方法时,才会考虑同源策略。因此,REST API对公众开放并且易于破解。
我想知道如何安全地限制对REST API的访问。任何想法或经验?
编辑1: 我找到了一个简单的解决方案来解决我的问题:我只是检查URL引用者的主机是否与请求的URL的主机相同。使用ASP.NET Web API,REST API操作使用的代码是:
private bool ApiCallIsAllowed()
{
var request = HttpContext.Current.Request;
return (request.UrlReferrer != null &&
request.UrlReferrer.Host == request.Url.Host);
}
我不是百分百确定我是否总是得到网址推荐人。
编辑2:根据this问题,网址引荐来源不可靠。长号。
答案 0 :(得分:1)
不要忘记使会话无效;)。
您可以使用spring-security或其他框架来简化此过程