security - 在 HEADER 或 URL 中传递 API key ?

标签 security http rest

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

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

最佳答案

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

在实践中,HTTP header 被证明更安全一点,因为 -

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

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

编辑: 回应@segfault 的评论 -

网站用户通常不会输入 API key 。他们输入自己的用户名和密码,然后进行交易以获取 API key 或访问 token ,因为它通常被称为。

如果您强制用户输入 API key 而不是用户名和密码,那将是安全的。但正如我所说,我还没有看到任何认真的应用程序这样做。

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

关于security - 在 HEADER 或 URL 中传递 API key ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9600495/

相关文章:

node.js - 在 Azure Functions (NodeJS) 中处理多个 HTTP 方法的正确方法是什么

python - 使用 Python 或 Curl 获取页面时出现不同的页面

java - 在 Rest Web 服务中发送 url 作为查询参数

java - jax-rs Rest服务调用属性文件

PHP安全系统

security - 马尔罗伊如何在广口 Frog 协议(protocol)中模仿爱丽丝?

php - "Symbolic"链接以解决对 public_html 之外的文件夹的请求?

java - keytool - 查看公钥和私钥

php - PHP 中的 header 顺序问题(以及一般的 HTTP)

java - 推特授权