昨天一位同事与我进行了激烈辩论,通过URL参数发送登录凭据作为身份验证方式是否安全.他正确地指出,在向服务器端发送请求之前,HTTPS会对URL中的所有非主机名/端口字符进行加密.
但是,我仍然认为这里存在可以窃取这些凭据的边缘情况,并且认为它们应该通过HTTPS POST发送.这实际上是一种发送登录/令牌数据的安全方法吗?
请求的URL可能会显示在Web服务器日志和浏览器历史记录/书签中,这不是一件好事.
如果您有后端数据库,请采取额外步骤.通过表单发布提交用户名和密码,让后端返回一个令牌(guid会这样做),将令牌写入数据库表并分配到期时间,然后在查询字符串中使用该令牌代替凭据.现在您的系统将非常安全,并且您有一个唯一的会话标识符作为加号.
就证书的传播而言,他是对的.但是还有许多其他需要考虑的事情,比如brwser历史记录,服务器日志文件,观看屏幕的用户等,在这种情况下会有风险.
安全是一个大词.SSH会阻止其他用户检索它,但你真的想在查询字符串上显示某人的密码吗?那个站在用户肩膀上的家伙怎么样?SQL注入怎么样?真的很糟糕,至少把它塞进一个表格帖子里.
我不知道HTTPS也加密了URL,很高兴知道.
但是,从安全角度来看,我会更加担心可以在URL栏中读取凭据.更不用说可能存储在浏览器历史记录中了.