问题 将登录凭据作为纯文本传递到HTTPS URL是否安全?


将登录凭据作为纯文本传递到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变得非常容易


10870
2018-06-30 15:20


起源

可能重复 https网址是否已加密? - Eric Petroelje
securityweek.com/hackers-can-intercept-https-urls-proxy-attacks - Tom


答案:


没有。 他们将不会在途中被看到,但他们将留在:

  • 浏览器历史
  • 服务器日志

如果可能的话,在身份验证时使用POST over HTTPS,然后设置“经过身份验证”的cookie,或者通过HTTPS使用HTTP摘要授权,甚至通过HTTPS使用HTTP Basic身份验证 - 但无论你做什么,都不要保密/敏感URL中的数据。

编辑:当我写“使用POST”时,我的意思是“在POST字段中通过HTTPS发送敏感数据”。发送一个 POST http://example.com/ClientLogin?password=hunter2 与使用GET发送它有点错误。

TL; DR: 不要将密码放在URL中。永远。


16
2018-06-30 15:24



因此,在POST请求中将凭证作为参数传递时,它被认为是安全的吗? - Andrew
@Andrew:如果他们是POST参数(因此不在URL中),那么是。编辑反映这一点。 - Piskvor
这就是我想弄清楚的。谢谢! - Andrew


即使使用SSL,在url参数中传递登录信息也不安全

使用SSL在POST正文中传递登录信息被认为是安全的。

如果您使用的是SSL,请考虑使用HTTP基本身份验证。虽然没有SSL这是非常有问题的,但它并不比带有凭据的POST更糟糕,它实现了你想要的,但是根据既定标准而不是自定义字段名称来实现。


1
2018-06-30 15:39





是的,但我不会这样做。

http://www.ourshop.com/resources/ssl_step1.html


-1
2018-06-30 15:25



不说为什么和链接不工作。 - holmis83


我不会这样做。只是你在同一个句子中有“登录凭证”,“纯文本”和“安全”的事实会引发红旗。

除非你的句子说“以纯文本形式传递登录凭证是不安全的”。


-2
2018-06-30 15:37