2012-03-07 11 views
4

我已经注意到,有些API会将API密钥作为url参数传递,而其他人则会将其传递至HTTP HEADER中。我正在开发一个基于Web的应用程序,它将严重依赖于REST API,现在我只需要它就可以将API KEY作为url参数传递。将API键传递给HEADER或URL?

我的问题是这些选项之一是否比另一个更安全?

回答

5

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

在实践中,HTTP头原来是因为一点点更安全 -

  1. 的URL获取存储在浏览器历史记录
  2. 的URL获取存储在访问日志服务器端

另外:除非您要求用户使用他的凭据登录,否则无法保护Web上的REST API。任何人都可以轻松识别API密钥并向服务器发出请求。

编辑: 为了响应@段错误的评论 -

网站用户一般不会进入API密钥。他们输入他们的用户名和密码,并将其交易以获取通常被调用的API密钥或访问令牌。

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

更具体地说,我的意思是“如果一个后端API预计API密钥,并且正在对AJAX从浏览器调用,并且不要求用户提供某种形式的凭据,你是没有安全感”

+0

从未想过将它作为HTTP HEADER的一小部分好处,我想这样做。在旁边,只有它是HTTP,如果API运行在HTTPS上,那么识别,窃取和API密钥并不那么容易。 – ryanzec 2012-03-07 16:38:03

+0

@ryanzec:re。除此之外 - 即使您使用HTTPS,我也可以检查Firebug中的通信并提取API密钥。你真的无法用一个API密钥来保护REST API。 – 2012-03-08 06:48:04

+0

对不起,但抛开只是错误的。 “用萤火虫提取api密钥”的用户是授权用户!如果您要求用户登录,那么这是同一个知道他的密码的人。 – Segfault 2013-02-11 16:11:45