gpt4 book ai didi

javascript - AngularJS 身份验证和基于 XSRF token

转载 作者:行者123 更新时间:2023-11-30 17:22:51 26 4
gpt4 key购买 nike

我是 Angular 的新手,我正在开发一个应用程序以了解更多信息。

我想构建身份验证。如果这是一种好方法,有人可以发表评论吗?

我正在考虑使用与带有 RestfullWS 的 XSRF 类似的方法。

1) 身份验证后,在基于 cookie 的 userid + sessionId + salt 中创建 token ,并使用 SHA256 加密此字符串

2) 我们需要将哪些信息传递给客户端应用程序?

3) 每次我们导航到需要身份验证的页面时,将在 1) 中创建的 token 传递给服务器

4) 在客户端检查用户是否通过身份验证。

我的问题是,如果用户已通过身份验证,我们如何才能安全地在客户端进行检查?如果我们将这些信息保存在 javascript 中,那该信息是否会被泄露,这不是真的吗?如何开发安全的“isAuthenticated”javascrip 函数?该函数是否应该从知道如何验证 token 的服务器获得响应?

这是一个好方法,还是有更好的方法?

非常感谢。

最佳答案

您必须始终假设客户端已经或可能受到威胁。因此,您无法在客户端确定用户已 100% 通过身份验证,绝对、肯定、毫无疑问。

但这几乎从来没有像我们想象的那么重要。在客户端,我们通常显示用户界面,而不是实际处理信用卡交易。我们没有让用户 A 100% 在客户端向用户 B 发送电子邮件消息 - 我们将其发送到服务器,其余的由它处理。

因此,你真正想要的是:

  1. 我如何知道在客户端上我应该像登录一样进行操作?也就是说,我什么时候停止显示登录表单并开始显示收件箱?

  2. 我如何在服务器上知道这个客户端真的是他/她所说的那个人?

第一个很简单。绘制一个空的收件箱是没有用的。使用 cookie 的存在来启用此行为,如果它被“黑客攻击”怎么办?用户能够看到一个空的收件箱?这没有任何值(value)。他们无论如何都可以轻松地下载您的原始模板——这些将是公开的,所以它们不完全是 secret 。所以在这里您只是在寻找“有意义”的一致行为。

您通常在客户端担心的一件事是 cookie 盗窃和中间人攻击。有多种技术可以解决这个问题,您应该探索它们。它们太长,无法在此处涵盖,而且并非特定于 AngularJS。

对于第二个问题,现在您必须验证用户的 session 。为了防止 cookie 被盗,除了您已经散列的内容之外,通常还包括来自两步身份验证周期(在 OAuth 中很常见)的随机数和其他内容,例如用户的 IP 地址。这在移动应用程序中是一个痛苦的地方,它可能会改变,但仍然相当普遍。在实践中,很难集体做到这一点,而且大多数黑客都希望做出重大妥协,而不仅仅是攻击一个用户……但您仍然应该在这里进行尽职调查。

您的方案“可能”完成了这些事情,但由于您只是对其进行了总结,因此仍有很多内容需要涵盖。我要补充的一个评论是,对于纯 API 驱动的应用程序,仅使用原始 header 而不是 cookie 变得越来越普遍。它们更难窃取 - 并非不可能,但任何可以减少攻击面的措施都是好事 (tm)。

最后我想你会发现其中很少一部分适用于 AngularJS。为您的整个应用程序选择一个合适的身份验证方案,几乎肯定会有一种方法将其集成到 Angular 中。

关于javascript - AngularJS 身份验证和基于 XSRF token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24815209/

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