所以现在我非常认同拥有纯 html+js 前端的想法,其中所有处理都发生在客户端浏览器上,后端以 JSON/xml/其他格式等提供所有数据。
这就是困境,
对于身份验证,我使用 OAuth2 Bearer token ,该 token 是在用户使用用户名和密码进行身份验证时生成的(例如在登录阶段)。
向此 WebAPI 发出请求的客户端应用程序(即前端 Web 服务器或移动应用程序)有额外的安全性。当它发出初始请求时,它会传递“client_id”和“client_secret”以确保客户端应用程序有权向后端服务器发出此请求。
在传统的 .NET 方式中,我会将加密的 clientid 和 key 存储在 web.config 中,我的 C#(或 VB.NET)代码将检索它并通过 SSL 将其发送到服务器。因此,client_id 和 client_secret 不会在渲染的 HTML(例如)中暴露给客户端浏览器。
在纯 javascript 环境中,如何保护我的 client_id 和 client_secret(或任何其他与此相关的敏感数据)?
谢谢
最佳答案
我认为你无法保护你的“ secret ”。
HTML5/JS代码是纯文本,任何拥有文本编辑器的人都可以看到它。人们通常尝试做的是使用 javascript 压缩器/压缩器来混淆他们的代码;请参阅here进行良好的讨论。这种做法叫做Security through Obscurity 。但请注意,混淆不是安全。只要有时间和努力,坚定的“黑客”最终会发现你的 secret 。您可以采取的阻止、延迟和挫败此类攻击的另一个步骤是将您的 secret 片段传播到代码、不同模块等中。话虽如此,您需要编写代码来在某个时候组装它们,所以再说一遍,没有真正的安全。
我有一个类似的问题,因为我想与服务器使用“共享 secret ”,这样我就可以对我的客户端请求进行哈希处理,这样它们就可以防篡改,并且在附件不知道共享 secret 的情况下无法重新创建。不幸的是,我不得不放弃这个想法,因为我意识到我无法将其保密。
关于javascript - webapi 后端与纯 javascript 前端,安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24264975/