Angular JS安全性最佳实践

时间:2014-05-12 00:29:08

标签: javascript angularjs security rest

我开发了一个Angular J&#S; S应用程序,它使用Rest API来访问它的数据。

我在服务器上有一个登录服务,它返回在将来所有请求中使用的令牌。没有令牌,没有数据。令牌过期后,将从服务器发送403状态代码,并向用户显示登录表单。

这项工作运行良好,但我确实有点担心,首次访问该网站的未经身份验证的用户会在登录前加载角度应用时收到每个模板/视图。

对于这个项目来说这不是问题,但我的下一个项目是针对一个企业,可能不希望他们的竞争对手嗅探应用程序并查看菜单等,即使他们无法获得任何数据没有有效的帐户。

这只是所有单页应用程序的问题,还是在加载所有模板文件和控制器文件之前可能是检查初始页面加载时登录的方法?

2 个答案:

答案 0 :(得分:2)

我想我明白你在说什么。 Angular的问题,使用视图等,很多与访问控制没什么关系,而是隐藏用户可以或可以做什么看。这只是因为这些类型的MV *框架在客户端。通常,对此的解决方案似乎是在服务器上进行处理(私有),然后仅在客户端可以访问这些资源时(例如,如您所提到的那样使用令牌)将它们发送到客户端。

如果您还没有考虑使用Node.js,那么处理这个问题就很容易了(Node.js不是唯一的选择,显然;任何其他服务器都可以这样做,但它将涉及配置例如,使用Apache,您可以使用.htaccess文件。)

无论如何,如果您将Express引擎与Node.js一起使用,它会使用公共文件夹为您的应用设置骨架,该公用文件夹仅保存用户将能够访问的静态内容(当我说静态内容时) ,我的意思是.html,.css,.js文件等。)如果有什么东西你不想向用户显示,除非他们有权查看它,你可以从另一个位置提供该资源并简单地渲染它把它发送到客户端。将Jade与Node.js / Express结合使用是一个很好的例子。

答案 1 :(得分:0)

我不确定这是一个问题的原因。 HTML& JavaScript无论如何都不应包含敏感信息。所有这些东西都很容易被任何想要看到它们的人使用。也许它与公司内联网存在问题,但即便如此,菜单结构和其他类似元素对我来说也不是一个大问题。

如果由于某种原因,您将要切换您的投放方式。您可能希望从服务器上提供HTML模板,而不是已在客户端构建HTML模板。所以切换到PHP单页面应用程序(或其他一些服务器端语言)。