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

时间:2010-06-30 15:20:53

标签: https

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

https://domain.com/ClientLogin?Email=jondoe@gmail.com&Passwd=123password

更新:因此,假设这不是在浏览器中输入,而是以编程方式生成并通过POST请求(而不是GET请求)进行请求。它安全吗?

解决方案:

GET请求中使用此类型的URL(即在浏览器中键入URL)并不安全,因为请求的URL将保存在浏览器历史记录和服务器日志中。

但是,作为POST的{​​{1}}提交{(1}}请求(即提交表单),同时将凭据作为https://domain.com/ClientLogin的一部分传递是安全的,因为POST body在连接到请求的URL后加密并发送。因此,表单操作将为POST body,表单字段值将在https://domain.com/ClientLogin中传递。

以下是一些帮助我更好地理解这一点的链接:

Answer to StackOverflow Question: Are https URLs encrypted?

Straightforward Explanation of SSL and HTTPS

Google Answers: HTTPS - is URL string itself secure?

HTTP Made Really Easy

2 个答案:

答案 0 :(得分:16)

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

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

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

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

TL; DR:不要在网址中输入密码。如初。

答案 1 :(得分:1)

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

也是如此

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

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