Angular2中的安全性与TS

时间:2016-08-15 15:45:21

标签: javascript security angular

我想使用带有TS的Angular2构建一个Web应用程序。

我在Angular2中阅读了几个关于身份验证的教程,他们说,我必须实现以下内容。

  1. 索引组件(公共)
  2. 登录组件(公共)
  3. 我的私人组件(私人)
  4. 所有这些组件都使用Angular-Router进行路由,并受到一些警卫的保护。

    但我认为这些警卫不是很安全。路由是有保护的,但组件在客户端的js中的某处。 一些“js-hacker”可以在没有权限的情况下访问私有组件。

    我对这个想法是对的吗?

    我的解决方案是在身份验证请求期间请求私有组件,并仅在用户拥有权限时才返回。

    但在这种情况下,我不得不将我的应用程序拆分为登录部分和私有部分。 (看起来像开销)

    另一个解决方案是在每个请求中发送一个令牌,这样“js-hacker”就可以看到该组件,但不能看到它的数据,因此对他来说没用。 (但需要存储此令牌)

    请帮我决定在安全方面走哪条路,或者建议我做一个更好的方法(我希望更好的方式......)。

    感谢。

1 个答案:

答案 0 :(得分:2)

您使用*ngIf有条件地将安全组件附加到有效的身份验证状态。如果绑定*ngIf以使其评估为false,则不会仅将其隐藏在视图中,它将从DOM中完全删除组件及其内部的所有内容。

如果他们知道自己在做什么,他们仍然可以查看该组件的源代码,是的,但正如您所推测的那样,您希望将敏感数据保留在源代码之外,并且只能从安全的地方获取它对于经过身份验证的用户。

你应该真正查看Google的Firebase。 Firebase可以比您自己更安全,更健壮地为您处理身份验证,并且您可以使用Firebase实时数据库存储敏感数据,并且只有 在用户通过身份验证时将其发送到客户端。它非常简单非常好,非常适合Angular(AngularFire2是官方库,虽然没有必要),并且它具有比数据库和身份验证更多的功能。相信我,你不会后悔的。