将API密钥存储在浏览器cookie中是否有任何缺点?

时间:2013-07-19 20:52:30

标签: javascript api security

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

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

这个方案的最大好处是我们不需要在服务器端维护会话。服务器端的所有内容都是无状态的。当您处于集群环境中时,无状态操作会带来显着的好处。

这是个坏主意吗?它安全吗?还有更好的方法吗?

假设我们正在运行https。

2 个答案:

答案 0 :(得分:1)

如果您不需要对旧浏览器的支持,并且您只需要访问api密钥客户端,那么您可以使用本地存储,这样您就不必向服务器发送cookie以及从服务器发送cookie,以及没有可以被盗的饼干。

答案 1 :(得分:1)

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

此处要考虑的另一件事是您的令牌有效期多久。在这种情况下,建议使用较短的API令牌到期时间。

幸运的是,很多人都有相同的要求,而OAuth 2规范只针对您提到的用例有一个隐式授权案例流程。你可以看一下并决定你的方法,

http://tools.ietf.org/html/rfc6749#section-4.2