在HEADER或URL中传递API密钥?

时间:2012-03-07 11:20:57

标签: security http rest

我注意到某些API让您将API密钥作为url参数传递,而其他API则将其传递给HTTP HEADER。我正在开发一个基于Web的应用程序,它将严重依赖REST API,而现在我只是拥有它,因此API KEY作为url参数传递。

我的问题是其中一个选项是否比另一个更安全?

1 个答案:

答案 0 :(得分:6)

在这两种情况下,API密钥都将以未加密的方式传递。所以除非你使用HTTPS,否则两者都是不安全的。

实际上,由于 -

,HTTP标头更加安全
  1. 网址存储在浏览器历史记录中
  2. 网址存储在服务器端的访问日志中
  3. 除此之外:除非您要求用户使用其凭据登录,否则无法保护Web上的REST API。任何人都可以轻松识别API密钥并向您的服务器发出请求。

    编辑: 回应@ segfault的评论 -

    网站用户通常不会输入API密钥。他们输入了他们的用户名和密码,并通过交易获取API密钥或访问令牌,因为它通常被称为。

    如果您强制用户输入API密钥而不是用户名和密码,那么它就是安全的。但正如我所说,我没有看到任何严肃的应用程序这样做。

    更具体地说,我的意思是“如果后端API需要API密钥,并且您正在从浏览器进行AJAX调用,并且您没有要求用户提供某种凭据,那么您就是不安全的”