0

我读到,由于 Angular 是基于客户端的,因此不能单独信任它来保护路由等。但是,我找不到破解它的方法。

谁能详细解释如何编辑本地 js 文件以绕过路由保护(或使用任何方法)?Firebase Auth 怎么样,有人可以欺骗 Angular 认为您是另一个登录用户吗?

我有使用两者的示例网站。源代码位于此GitHub 存储库,它通过 Firebase 托管在:URL

我在主页面组件中添加了一些秘密消息(显然未在 GitHub 存储库中显示),该组件受 Guard 保护,使用 FirebaseUI auth 对用户进行身份验证。它们将显示为以下语句:

  • “如果破坏 Angular Guard 的秘密消息:< secret-msg >”
    • 这个展示给任何可以查看组件 html 的人
  • “如果破坏 Firebase 身份验证的秘密消息:< secret-msg >”
    • 这个展示给任何可以冒充“admin@nowhere.com”登录的人

有人可以看到这些或解释黑客是如何做到的吗?我希望很清楚这篇文章不是试图鼓励黑客攻击,而只是为了了解 Angular 和 Firebase Auth 使用背后的安全模型(我知道 OAuth 本身是安全的,但不确定我是否在auth.service 中使用它。 ts是)。

4

1 回答 1

3

Secret message if broke Angular Guard: 8ef80ecb-7439-4cc3-8263-89afcd012d1c

Secret message if broke Firebase Auth: f380cb1a-aaec-4898-81fb-98aff2863765

这是你所期待的吗?

所以这里不涉及黑客攻击。我可以在浏览器中打开开发者工具并查看缩小的 js 代码。前端安全的理念是永远不要向前端发送您不希望用户看到的任何内容。Auth Guard 实际上只是一种阻止爱管闲事的用户查看他们没有角色/权限查看的部分 UI 的方法。它不会阻止您下载 javascript 并在代码中四处寻找。

至于冒充另一个用户,您已经(明智地)将您的身份验证交给了第三方提供商。除非我可以获取其他人的帐户凭据或从他们的浏览器访问身份验证令牌,否则您是非常安全的。

如果我是一名黑客(我不是),我会做什么是在代码中四处寻找后端接口调用,看看它们中的任何一个是否不安全或可供我注册的虚假用户使用。我可以通过直接调用它们(绕过你的 UI)并弄乱输入参数来做到这一点。这就是大量泄露信息的来源、后端资源的错误配置安全性或设计不良的 API。

于 2020-12-17T23:39:27.123 回答