gpt4 book ai didi

Angular canActivate 安全性

转载 作者:太空狗 更新时间:2023-10-29 17:36:58 24 4
gpt4 key购买 nike

最近,我一直在思考我正在开发的应用程序的安全性。客户端基于 Angular 构建,后端为 Rails API。据我所知,普遍的共识是,如果它在客户端,假设它可以被破坏。所以这让我想知道我何时以及是否应该为路由使用类似 canActivate 的东西,或者我是否应该每次在服务器上为路由请求检查授权。我考虑过将对服务器的身份验证请求放在 canActivate 中,但我认为 canActivate 可以被黑客攻击以响应 true,绕过对服务器响应?如果是这样,如果它只是一扇玻璃门,像 canActivate 这样的东西有什么意义?

最佳答案

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

假设您有一个应用程序,它有一个始终可访问的登录路由和一个显示登录用户的 secret 内容的 secret 表:

  • 登录
  • 带有 AuthGuard 的 SecretsTable

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

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

关于Angular canActivate 安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43784689/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com