登录后,所有页面都应该是https吗?

时间:2010-07-15 20:36:13

标签: php security encryption https cryptography

这有点难以解释,但我会尽我所能。

有一个网站,每个页面都有用户名/密码字段的登录表格。这些页面未使用SSL。用户填写用户名/密码并提交表单后,表单将被发送到https的身份验证页面。

我对这种情况有几个问题。

  1. 将表单提交到https页面时,数据是否已加密?或者只是从https页面开始(我假设只来自)?
  2. 如果第一个答案是梯形图,这是否意味着我需要对所有页面使用https,因为登录表单是从那里被重定向?
  3. 用户使用https进行身份验证后,是否可以将用户重定向回http并继续使用会话数据?或者用户应该保持https状态?
  4. 将用户保留为https会更好/更糟吗?

非常感谢您的帮助!
大都会

结论

好的,所以在考虑了一段时间之后,我决定将整个事情做成https。 @Mathew + @Rook,你的答案都很棒,我认为你们都很重要。如果我处于不同的情况,我可能会采用不同的方式,但这是我制作整个事情的原因。

  1. 控制页面请求会更容易,因为我只需要保留在https中。
  2. 我并不过分关注性能(在另一种情况下我可能已经过了)
  3. 我不需要怀疑用户数据是否在所有地方都受到保护
  4. 我将遵循OWASP指南,如Rook所述

4 个答案:

答案 0 :(得分:10)

根据The OWASP top 10,在任何时候都不能通过HTTP使用经过身份验证的会话ID。因此,您通过HTTP创建会话,然后该会话进行身份验证,然后您违反了OWASP Top 10,并且您允许您的用户容易受到攻击。

我建议设置secure flag on your cookie。这是此功能的可怕名称,但它强制cookie仅为https。这不应该与“Httponly cookies”相混淆,“Httponly cookies”是一个不同的标志,有助于减轻xss的影响。

为了确保您的用户安全,我会一直强制使用HTTPS。 ssl是一个非常轻量级的协议,如果遇到资源问题,请考虑链接您的https策略。

答案 1 :(得分:6)

  1. 是。如果操作URL为https,则表单数据将被加密。
  2. 由于#1,您不必将页面设为https,但您可能会收到混合内容警告。当然,中间人攻击者可以操纵登录页面以指向不同的操作URL。
  3. 这是您的决定。显然,通过HTTP传输的任何数据,无论是cookie(包括会话cookie)还是用户数据,都可以被截获和操纵。
  4. 同样,这是基于性能和安全性的权衡。

答案 2 :(得分:3)

除了The Rook所说的,从http到https提交表单是一种风险,原因有两个:

  1. 页面上没有“锁定”图标,人们输入用户名和密码,因此他们无法知道他们的详细信息是否已加密(“信任你”除外)
  2. 如果有人劫持了您的网页,您的用户将无法知道他们将要输入他们的用户名和密码并被重定向到恶意页面(这有点是#1的必然结果)。
  3. 这比http cookie拦截要简单得多,所以实际上风险更大......

    但是,鲁克的观点很重要:你应该从不混合http和https流量。在我们的网站上,一旦您登录,所有从那时起就是https。

答案 3 :(得分:2)

除了之前的答案之外,由于性能原因,人们往往希望从HTTPS转到HTTP,this article about HTTPS at Google可能会引起关注。其主要信息是:

  

SSL / TLS不是计算上的   昂贵了。

相关问题