我想使用带有TS的Angular2构建一个Web应用程序。
我在Angular2中阅读了几个关于身份验证的教程,他们说,我必须实现以下内容。
所有这些组件都使用Angular-Router进行路由,并受到一些警卫的保护。
但我认为这些警卫不是很安全。路由是有保护的,但组件在客户端的js中的某处。 一些“js-hacker”可以在没有权限的情况下访问私有组件。
我对这个想法是对的吗?
我的解决方案是在身份验证请求期间请求私有组件,并仅在用户拥有权限时才返回。
但在这种情况下,我不得不将我的应用程序拆分为登录部分和私有部分。 (看起来像开销)
另一个解决方案是在每个请求中发送一个令牌,这样“js-hacker”就可以看到该组件,但不能看到它的数据,因此对他来说没用。 (但需要存储此令牌)
请帮我决定在安全方面走哪条路,或者建议我做一个更好的方法(我希望更好的方式......)。
感谢。
答案 0 :(得分:2)
您使用*ngIf
有条件地将安全组件附加到有效的身份验证状态。如果绑定*ngIf
以使其评估为false,则不会仅将其隐藏在视图中,它将从DOM中完全删除组件及其内部的所有内容。
如果他们知道自己在做什么,他们仍然可以查看该组件的源代码,是的,但正如您所推测的那样,您希望将敏感数据保留在源代码之外,并且只能从安全的地方获取它对于经过身份验证的用户。
你应该真正查看Google的Firebase。 Firebase可以比您自己更安全,更健壮地为您处理身份验证,并且您可以使用Firebase实时数据库存储敏感数据,并且只有 在用户通过身份验证时将其发送到客户端。它非常简单非常好,非常适合Angular(AngularFire2是官方库,虽然没有必要),并且它具有比数据库和身份验证更多的功能。相信我,你不会后悔的。