如何保护不使用身份验证的AngularJS应用程序?

时间:2014-09-22 07:52:55

标签: angularjs asp.net-web-api

我有一个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问题,网址引荐来源不可靠。长号。

1 个答案:

答案 0 :(得分:1)

  1. 使用ssh - 显而易见:)
  2. 登录进程应生成令牌 - 将其写为cooke - 每个http请求都将在头文件中使用它
  3. 准备将会读取您的令牌并授权每个请求的休息拦截器
  4. 使用一些Javascript Obfuscator
  5. 不要忘记使会话无效;)。

    您可以使用spring-security或其他框架来简化此过程