Angular可以激活安全性

and*_*rue 5 security angular-routing angular

最近,我一直在考虑我正在开发的应用程序的安全性.客户端是在Angular上构建的,带有Rails API后端.从我可以收集的信息来看,普遍的共识是,如果它在客户端,则认为它可能会受到损害.所以这让我想知道何时以及我是否应该使用类似于canActivate路由的东西,或者我是否应该每次在服务器上检查授权以获取路由请求.我想把auth请求放到服务器中,canActivate但我认为canActivate可以被黑客攻击响应true,绕过对服务器响应的需求?如果是这样的话,canActivate如果它只是一扇玻璃门,有什么意义呢?

Kim*_*ern 5

TL;DR:canActivate防护不是用于安全,而是用于用户体验。数据应始终通过需要身份验证的 API 进行保护。

假设您有一个应用程序,该应用程序具有始终可访问的登录路径和一个显示登录用户的秘密内容的秘密表:

  • 登录
  • SecretsTable 与 AuthGuard

AuthGuard 检查用户是否已登录,如果未通过身份验证,则重定向到登录。正如您所说,就像客户端的任何事情一样,这可能会受到损害。这就是为什么 SecretsTable 的秘密数据应该来自受保护的 API 调用。即使数据是静态的(对于任何用户都相同),您也不会将其包含在客户端应用程序中,而是通过此 API 调用来保护它。

那么我们需要 AuthGuard 做什么呢?与其说是为了安全,不如说是为了用户体验。myapp.io/secrets-table想象一下,用户通过聊天信使接收 URL 。如果我们没有 AuthGuard,用户可能会收到错误消息 (401) 或看到空表视图。我们的数据受到保护,但用户体验仍然很差。更好:AuthGuard 会立即重定向到登录,甚至可能在成功进行身份验证后将用户带回机密表。此外,我们不必为每个视图实现此逻辑,但可以为多个受保护的路由重用 AuthGuard。