Angular 2 Route Guard / Auth Guard Security

时间:2017-02-25 18:36:12

标签: angular authentication firebase

我刚刚在Angular-University完成了Angular 2和Firebase的Angular 2课程。

讲师Vasco(@ angular-university)提到Router Guard不安全,你可以绕过它,因为它是一个前端框架。

我们使用Firebase Auth来了解用户是否经过身份验证,并设置安全规则以防止读/写,除非用户通过身份验证。所以,我知道数据是受保护的。

然而,这条路线确实安全吗?他提到使用服务器后端来提高安全性,但没有提到任何细节。

我一直在尝试搜索,但我还没有看到其他人提出这个问题。

在一天结束时,Angular 2路由器防护是否自行保护,或者您是否必须实施服务器来保护路由?用户如何绕过路线?

谢谢!

1 个答案:

答案 0 :(得分:10)

您描述的问题并非特定于Angular。所有JavaScript应用程序都面临着同样的安全问题。

Vasco强调,路线卫士只是部分安全。它们只是在客户端浏览器中执行的一段代码。如果用户可以使用此代码进行调节(例如,在他们的浏览器内存中),他们可能会改变它的工作方式。

在实践中,这并不一定容易,因为部署的代码被缩小,uglified,捆绑......但在较低级别,您的Angular应用程序只是一堆静态HTML / JS / CSS文件,位于服务器上。这些文件通常可公开访问:任何知道其URL的人都可以下载并浏览其源代码。如果有人要阅读您的应用文件的源代码,请问自己您将面临哪些风险。您永远不应将敏感信息存储在这些文件中。

作为一般规则,如果您已经确保了后端,那么您已经完成了大部分工作。想象一下,恶意用户找到了激活您的一条受保护路线的方法。后端仍然不会返回此路由的数据,并且页面上不显示任何内容。相反,您应该确保任何敏感操作都会咨询后端(例如,不要让用户转移资金只是因为他们可以看到并点击其中的"转移"按钮浏览器;后端应验证他们是否已经过身份验证,并且他们有足够的资金)。

现在,如果您想要额外的安全层,您可以要求对用户进行身份验证,以便访问您应用的静态资产(index.html.js文件...)但是您要#39 ; d需要使用支持它的服务器(Firebase托管不是AFAIK),实际上这很少需要。

退一步,保护单页应用不仅仅是确保其路线安全。有跨站脚本,点击等等。

以下是您可以查看的一些资源: