作者:夜阑人静1314coolgirl | 来源:互联网 | 2023-02-10 17:36
我刚刚在Angular-University完成了Angular 2和Firebase的Angular 2课程.
讲师Vasco(@ angular-university)提到Router Guard不安全,你可以绕过它,因为它是一个前端框架.
我们使用Firebase Auth来了解用户是否经过身份验证,并设置安全规则以防止读/写,除非用户通过身份验证.所以,我知道数据是受保护的.
然而,路线实际上是安全的吗?他提到使用服务器后端来提高安全性,但没有提到任何细节.
我一直在尝试搜索,但我还没有看到其他人提出这个问题.
在一天结束时,Angular 2路由器防护是独立安全还是您必须实施服务器来保护路由?用户如何绕过路线?
谢谢!
1> AngularChef..:
您描述的问题并非特定于Angular.所有Javascript应用程序都面临同样的安全问题.
瓦斯科正确地强调,路线卫兵只是部分安全.它们只是在客户端浏览器中执行的一段代码.如果用户可以使用此代码进行调节(例如,在他们的浏览器内存中),他们可能会改变它的工作方式.
在实践中,这并不一定容易,因为部署的代码被缩小,uglified,捆绑...但在较低级别,您的Angular应用程序只是一堆静态HTML/JS/CSS文件坐在服务器上.这些文件通常可公开访问:任何知道其URL的人都可以下载并浏览其源代码.如果有人要阅读您的应用文件的源代码,请问自己会冒哪些风险.您永远不应将敏感信息存储在这些文件中.
作为一般规则,如果您已经保护了后端,那么您已经完成了大部分工作.想象一下,恶意用户找到了激活您的一条受保护路线的方法.后端仍然不会返回此路由的数据,并且页面上没有任何内容显示.相反,您应该确保任何敏感操作都会查询后端(例如,不要让用户只是因为他们可以在浏览器中看到并单击"传输"按钮来转移资金;后端应该验证他们是否经过身份验证并且他们是有足够的资金).
现在,如果您想要额外的安全层,您可以要求对用户进行身份验证,以访问应用程序的静态资产(index.html
,.js
文件......),但您需要使用支持该用户的服务器(Firebase托管不会) t AFAIK)并且在实践中这很少是必要的.
退一步说,保护单页应用程序不仅仅是确保其路线安全.有跨站点脚本,点击劫持等.
以下是您可以查看的一些资源:
Angular.io的安全章节 - https://angular.io/guide/security
AngularJS Security:保护您的单页应用程序 - https://slideshare.net/carlo.bonamico/angularjs-security-defend-your-single-page-application(它似乎有趣点,即使它是关于AngularJS)
OWASP Javascript的前10名 - http://erlend.oftedal.no/blog/?blogid=125 (十大最关键的Web应用程序安全风险)