为了账号安全,请及时绑定邮箱和手机立即绑定

在使用 Angular 时保持 API 共享秘密的安全

在使用 Angular 时保持 API 共享秘密的安全

C#
皈依舞 2021-10-09 19:51:01
我们有一个现有的 API,我们的一些外部应用程序(Docker 容器等)使用它来回调我们的服务器。它使用 HMAC(共享秘密)系统进行保护。这在从一台服务器向另一台服务器进行调用时非常有效。但是,我们即将开始慢慢地将我们的网站形式 .NET Web Forms 转换为 Angular (v6),我们希望 Angular 能够使用相同的 API 和相同的安全性。我们设想的是一个单一的 Angular 库,称为类似AngularAPICall,它在每个会话开始时实例化,它接受公钥和共享秘密作为参数。然后,每次 Angular 需要回调服务器时,它都会调用 内部的方法AngularAPICall,该方法使用公钥和共享秘密来创建所需的哈希值并构建 API 调用标头。但是,我们不确定在像 Angular 这样的原生客户端平台上使用 Shared Secret 时如何保证它的安全。我们在哪里/如何存储共享秘密?把它放在 web.config 中不会有任何好处。除了存储它,我们如何将它传递到客户端库AngularAPICall并保证它的安全?我们如何保持它以便在调用之间保持它?或者……我们是不是用错了方法?我们是否应该重新考虑如何处理我们在 Angular 中使用的 API 安全性?
查看完整描述

2 回答

?
慕容3067478

TA贡献1773条经验 获得超3个赞

客户端中的任何敏感数据都是一个巨大的安全问题。任何用户都可以使用开发人员工具来操作客户端,并且它绝不能包含任何类型的共享机密。

归根结底,添加一个像 Angular 或 React 这样的框架可以让你更轻松地构建一个漂亮的 UI,它不会以任何方式保护你。

任何类型的 Web 应用程序都需要额外的身份验证层,因为任何查看网络的人都可以拦截一个简单的秘密。

我建议使用oAuth或JWT令牌来验证有效请求。理论上,API 端点只有在带回敏感信息时才应受到保护。我假设人们在这方面登录了这个平台。这些令牌是从服务器生成的,它们在客户端中用于发出请求。如果用户登录并从那时起生成第一个 JWT 令牌,您可以假设您可以将它们传递给您的 API 请求,因为它只能在经过身份验证的用户的客户端上查看。

当您进入网络的大世界时,您需要一些身份验证来保护您的 API,并且那里有很多负载。你在上面做的事情很快就会被任何人破解。重新考虑您的身份验证模式,记住服务器永远不应该信任客户端!


查看完整回答
反对 回复 2021-10-09
  • 2 回答
  • 0 关注
  • 151 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信