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

时间:2014-06-17 13:20:20

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

所以现在我几乎被出售给纯html + js前端的想法,其中所有处理都发生在客户端浏览器上,后端提供JSON / xml /其他格式的所有数据等等。

这就是困境,

对于身份验证,我使用的是OAuth2 Bearer令牌,该令牌在用户使用用户名和密码进行身份验证时生成(例如,在登录阶段)。

对于向此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(或其他任何敏感数据)?

由于

1 个答案:

答案 0 :(得分:1)

我不认为你可以保护你的秘密"。

HTML5 / JS代码是纯文本,任何拥有文本编辑器的人都可以看到它。人们通常尝试做的是使用javascript minifiers / compressors来模糊他们的代码;请参阅here进行讨论。这种做法称为Security through Obscurity。但请注意,模糊处理安全。给予时间和精力,一个坚定的"黑客"最终会找到你的秘密。你可以用来阻止,延迟和阻止这种攻击的另一个步骤是在代码中,在不同的模块中分散你的秘密等等。话虽如此,你需要编写代码来在某些时候组装它们,所以再一次,没有真正的安全。

我有类似的问题,因为我想使用"共享密码"与服务器,所以我可以哈希我的客户端请求,以便它们是防篡改的,并且无法在不知道共享秘密的情况下重新创建。不幸的是,我不得不放弃这个想法,因为我意识到我不能保守秘密。