javascript - 将 API key 存储在浏览器 cookie 中有什么缺点吗?

标签 javascript api security

我们有一个带有 json API 的应用程序。我们在浏览器中使用 Javascript 向其发送 ajax 调用。每个 API 调用都需要一个 API key 。

我计划实现一个登录 API,该 API 将接受用户名和密码并返回该特定用户的 API key 。 key 将放入 cookie 中,并随每个 API 请求传回。 (您仍然可以将它包含在 json 请求中;cookie 将作为后备。)

这个方案的最大好处是我们不需要在服务器端维护 session 。服务器端的一切都是无状态的。当您处于集群环境中时,无状态操作具有显着优势。

这是个坏主意吗?安全吗?有没有更好的办法?

假设我们在 https 上运行。

最佳答案

不,按照您提到的方式,即使您使用的是 https,您的 API key 也不安全。这是因为 API key 现在存在于您的浏览器中,并且很容易被浏览器插件、脚本等暴露。

这里要考虑的另一件事是您的 token 有效多长时间。在这种情况下,建议 API token 过期时间较短。

幸运的是,很多人都有相同的要求,并且 OAuth 2 规范有一个隐式授权案例流程,仅适用于您提到的用例。您可以查看并决定您的方法,

https://www.rfc-editor.org/rfc/rfc6749#section-4.2

关于javascript - 将 API key 存储在浏览器 cookie 中有什么缺点吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17755300/

相关文章:

javascript - 在 Heroku 上部署 NodeJS 应用程序时遇到错误

api - drupal Bootstrap 脚本 : how to get list of all nodes of type x?

ios - OAuth2 "social login"流程(允许通过 Facebook/Twitter 进行 OAuth2 身份验证): are there any examples/literature?

api - Web API 设计技巧

javascript 和函数的执行顺序

javascript - 如何使用 Adob​​e Illustrator Extendscript 更改当前选定文本的字体?

javascript - 为什么状态更改不会调用 React act() 错误?

javascript - 绕过 URL 编码(客户端)执行 XSS

asp.net-mvc - 如何在 ASP.NET MVC 中请求 System.Net.WebPermission 类型的权限?

sql - 为什么SQL既支持两个单引号又支持反斜杠转义