gpt4 book ai didi

angularjs - 在 AngularJS 应用程序中保护 OAuth clientId/clientSecret

转载 作者:行者123 更新时间:2023-12-03 23:20:53 25 4
gpt4 key购买 nike

我知道这可能是一个古老的问题,但是......是否有任何最佳实践来保护客户端 secret 以在 AngularJS 应用程序中执行 OAuth2 身份验证?我一直在绞尽脑汁想出一种解决方案,从现代风格的 Web 应用程序中提供对 API 的真正安全访问(它们不一定是 AngularJS。)根据我的经验,添加抽象层和混淆层确实不行任何可以提高安全性的东西……它们只会让任何潜在的黑客更难以破解安全蛋(但是他们中的许多人更喜欢一个好的挑战,所以你真正要做的只是让黑客更有趣。)

除了明显无效的解决方案(例如代码的混淆和卷积等)之外,在现代 Web 应用程序中是否有保护客户端 secret 的最佳实践?我知道这些问题是由桌面客户端应用程序引起的,我不相信除了“最好混淆,这会减慢黑客的速度”之外还有其他解决方案。我们与网络应用程序在同一条船上吗?这个问题没有真正的解决方案吗?

如果没有解决方案……使用 OAuth 保护 REST API 真的有任何意义吗?

最佳答案

请记住 OAuth 不是关于防止假冒,而是更多关于保护凭据。第三方为您验证了用户的身份,而不会暴露用户的凭据。由于代币不是凭证,黑客可以造成的伤害量和他的行动窗口是有限的。
但是 OAuth 对于您的应用程序而言,它本身并不比常规用户名/密码验证更安全。在客户端应用程序上,您的所有代码都可供全世界查看!作为
您提到,客户端加密是一个值得怀疑的策略。

虽然没有建立保护客户互动的最佳实践,但这里有一些方法可以最大限度地减少您的风险:
1) SSL:银子弹?也许。越能用 SSL 在您的网站和您的请求中,您的用户请求将越安全。老实说,我相信所有特权请求都应该由加密请求发出。
2) 短 token 生命周期:代币的生命周期越短,嗅探它的激励/优势就越少。
OAuth 2.0 通过将身份验证 token 交换为身份验证 token 的刷新 token 来创建身份验证之外的持续喋喋不休。作为开发人员,您现在正在开发一个聊天应用程序,该应用程序执行很多“你的 token 是什么,这是另一个 token ,向我要一个 token ,这是你的新 token ......所以你想要什么?” ……“哎呀,时间到了,你的刷新 token 呢?”
如果这听起来很痛苦,那确实是。 OAuth 2.0 旨在使开发人员的流程更轻松。但重要的一点是,代币的生命周期越短,黑客就越难维护欺诈身份。
Refresh Token reference
3) 强制执行您的域:想要减少嗅探者滥用盔甲缝隙的机会吗?不允许跨域请求!
当然,我们经常有分布式环境。但是,如果您的 Facade 位于客户的域中,那么您的曝光就会减少(单词选择有问题)。
强制黑客使用你的域名,限制他们的创造力。
4) 使用第 3 方 API 来尽可能频繁地维护您的访问权限: 谷歌 Facebook API 和服务已经过单元测试、实战测试和演进。你越能依靠他们来维护你的用户的身份,你做的工作就越少,你获得的机会就越少。
5) 查看IP地址:几乎任何东西都可以伪造,但黑客必须知道 IP 地址是您验证的一部分。这是所有实践中最不可靠的,但结合 1,2 或更多,黑客可以利用的差距越来越小,努力的返回也逐渐消失。
6) 使用“ secret ”或第二个参数:你可以传递你的用户而不是 token 。您可以传递自己的 Alter-Token。
假设它是一个来回传递的 ID 数据。以不明显的方式命名参数。将其设为数字​​(例如年龄、高度、地址)。重要的一点是,您的黑客对对方的要求知之甚少或一无所知!
您可以通过具有 3 个作为安全性的参数来抛出一个严重的事件 Spanner 。
7) 不要提供错误消息来通知黑客他们已被抓获。给出超时消息而不是“知道了!”如果入侵者没有意识到欺诈行为被捕获了,他们也不会适应。

我不能说太多—— SSL 省去了很多麻烦。
注:我见过的所有客户端提供商都允许访问他们的 API 而不会暴露 secret 。 secret 不应该暴露在客户端上。

  • 客户端上暴露的任何数据都可以闪烁
  • 您使用的任何加密算法都将在客户端上公开。
  • 关于angularjs - 在 AngularJS 应用程序中保护 OAuth clientId/clientSecret,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23896690/

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