0

我们当前的 REST API 实现使用 queryString 中的 apiKey 来处理所有类型的请求(PUT、POST、GET)。我觉得这是错误的,但无法解释原因(也许 apiKey 可以在服务器和客户端之间的某处兑现)。就像是:

POST /objects?apiKey=supersecret {name: 'some'}

那么,这是一个安全问题吗?请描述 HTTP 和 HTTPS 连接情况

4

1 回答 1

3

HTTP

无论您是否使用 PUT、POST 等,只要您将超级机密值从客户端发送到服务器或反之亦然,第三方都可以看到和拦截您的超级机密值。当您使用 cookie 存储这些值而不是查询字符串时,甚至是这样.

HTTPS:

当数据在您的客户端和服务器之间传输时,它无法被拦截,因为它受 https 保护,即使它在查询字符串中也是如此。但是大多数人认为在查询字符串中发送数据很糟糕,因为许多系统都会记录查询字符串。例如,大多数服务器都配置为打印带有路径和查询参数的访问日志。此外,如果它来自浏览器,它可以存储在您的浏览器历史记录中。

于 2016-08-18T11:32:58.677 回答