将登录凭据作为纯文本传递到HTTPS URL是否安全?
https://domain.com/ClientLogin?Email=jondoe@gmail.com&Passwd=123password
更新: 因此,假设这不是在浏览器中输入,而是以编程方式生成并通过POST请求(而不是GET请求)进行请求。它安全吗?
解:
在a中使用这种类型的URL是不安全的 GET 请求(即在浏览器中键入URL),因为请求的URL将保存在浏览器历史记录和服务器日志中。
但是,作为一个提交是安全的 POST 请求 https://domain.com/ClientLogin (即提交表格),同时传递证书作为一部分 POST body,自从 POST body 在连接到请求的URL后加密并发送。因此,表单操作将是 https://domain.com/ClientLogin 并且表单字段值将在。中传递 POST body。
以下是一些帮助我更好地理解这一点的链接:
StackOverflow的答案问题:https URL是否已加密?
SSL和HTTPS的简单说明
Google Answers:HTTPS - URL字符串本身是否安全?
HTTP变得非常容易
没有。 他们将不会在途中被看到,但他们将留在:
如果可能的话,在身份验证时使用POST over HTTPS,然后设置“经过身份验证”的cookie,或者通过HTTPS使用HTTP摘要授权,甚至通过HTTPS使用HTTP Basic身份验证 - 但无论你做什么,都不要保密/敏感URL中的数据。
编辑:当我写“使用POST”时,我的意思是“在POST字段中通过HTTPS发送敏感数据”。发送一个 POST http://example.com/ClientLogin?password=hunter2 与使用GET发送它有点错误。
TL; DR: 不要将密码放在URL中。永远。
即使使用SSL,在url参数中传递登录信息也不安全
使用SSL在POST正文中传递登录信息被认为是安全的。
如果您使用的是SSL,请考虑使用HTTP基本身份验证。虽然没有SSL这是非常有问题的,但它并不比带有凭据的POST更糟糕,它实现了你想要的,但是根据既定标准而不是自定义字段名称来实现。
我不会这样做。只是你在同一个句子中有“登录凭证”,“纯文本”和“安全”的事实会引发红旗。
除非你的句子说“以纯文本形式传递登录凭证是不安全的”。