【问题标题】:authenctication token in a queryString查询字符串中的身份验证令牌
【发布时间】:2016-12-25 05:52:11
【问题描述】:
我们当前的 REST API 实现使用 queryString 中的 apiKey 来处理所有类型的请求(PUT、POST、GET)。我觉得这是错误的,但无法解释原因(也许 apiKey 可以在服务器和客户端之间的某处兑现)。比如:
POST /objects?apiKey=supersecret {name: 'some'}
那么,这是一个安全问题吗?请描述HTTP和HTTPS连接情况
【问题讨论】:
标签:
rest
security
restful-authentication
rest-security
【解决方案1】:
HTTP
无论您是否使用 PUT、POST 等,无论您是否使用 PUT、POST 等,只要您将超级机密值从客户端发送到服务器时,第三方都可以看到和拦截您的超级机密值。当您使用 cookie 来存储这些值时,甚至是这样查询字符串。
HTTPS:
当数据在您的客户端和服务器之间传输时,它无法被拦截,因为它受 https 保护,即使它在查询字符串中也是如此。但是大多数人认为在查询字符串中发送数据很糟糕,因为许多系统都会记录查询字符串。例如,大多数服务器都配置为打印带有路径和查询参数的访问日志。此外,如果它来自浏览器,它可以存储在您的浏览器历史记录中。