javascript - webapi 后端与纯 javascript 前端,安全

标签 javascript angularjs security asp.net-web-api oauth

所以现在我非常认同拥有纯 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/

相关文章:

javascript - 如何在 jQuery .load() 函数上使用 .append

javascript - 您存储返回回调的回调的模式是否有名称?

c# - 使用 WebService 上传文件

ios - 移动 ios/android 上的 Facebook/Twitter oauth,如何在应用程序端保护我的 App_id 和 secret ?

security - 包含自己的校验和的文件

javascript - 跨域ajax同步调用检索纯文本

javascript - 将url中的数据放入dataTable

JavaScript:如何分离 U8IntArray?

javascript - Node vs Chrome,instanceof 的实现,多个文件

javascript - AngularJS + 简易饼图 - 动画不工作