【问题标题】:What are the advantages of tracking-mode SSL vs. COOKIE?跟踪模式 SSL 与 COOKIE 相比有何优势?
【发布时间】:2018-08-07 11:43:28
【问题描述】:

我正在创建一个部署在 Tomcat/EE(带有 CLIENTCERT)中的 JSF 应用程序。默认情况下,jsessionid(使用 SecureRandom 生成,因此看起来很安全)设置在 URL 中,我通过更改 SessionTrackingMode 禁用了 security reasons

现在我正在尝试找出使用的安全优势/劣势:

<tracking-mode>SSL</tracking-mode><tracking-mode>COOKIE</tracking-mode>

(考虑到安全性几乎总是会对性能和其他变量产生影响)。问题之一可能是我不知道 SSL tracking-mode 到底是做什么的。 This API documentation不是很清楚。

我应该什么时候使用其中一种?

PS:我知道这不是 Tomcat 或 JSF 特有的,但我需要给出问题的上下文

【问题讨论】:

    标签: session tomcat jsf-2 session-cookies


    【解决方案1】:

    出于以下几个原因,我建议使用基于 cookie 的会话跟踪而不是 SSL 会话跟踪:

    1. 使用 SSL 会话跟踪可以防止显式(用户启动)注销
    2. 使用 SSL 会话跟踪可以防止会话因不活动超时而终止
    3. 使用 SSL 会话跟踪可能会导致意外注销(由于 TLS 重新协商,这会更改 TLS 会话 ID)
    4. 使用 SSL 会话跟踪将使调试、故障排除以及在必要时通常操作您自己的应用程序变得更加困难(告诉客户端清除其 cookie 比要求他们使 TLS 会话 ID 过期更容易且更简单)

    FWIW,IBM WebSphere has dropped support for SSL-based session-tracking 7.0 版(大约 2008 年)。

    我认为使用基于 SSL 的会话跟踪没有任何优势。

    【讨论】:

    • 这作为一般规则很有用。但是,我想检查这是否真的适用于我的情况......我正在使用客户端证书,所以 [1] 没有明确的“注销”,只有当用户关闭浏览器时。 [2] 没有真正的超时,因为只要浏览器打开,会话就处于活动状态。 [3] 强制注销只会要求用户再次选择证书(有点烦人但不是灾难性的)[4] 这实际上适用。据我了解,只有第 4 点可以证明 SSL 上的 cookie 是合理的。还有其他原因吗? PS。我试图找到 WebSphere 原因没有成功
    • 我真的想不出任何其他原因。我的经验是,基于 SSL 的会话跟踪很少在野外使用,所以当你问问题时,你可能会耸耸肩,就像你在这里对我所做的那样。使用客户端证书进行身份验证绝对是我起初显然忽略的重要信息,但是(HTTP)会话与经过身份验证的用户不同,因此它们会有超时等。这可能会让用户(或应用程序)感到困惑如果他们不必再次登录,但他们的 (HTTP) 会话已超时并且会话中意外丢失了某些内容。
    • 您可能会通过询问 Tomcat 用户的邮件列表获得更好的反馈,因为那里有更多的用户和管理员可能对基于客户端证书的身份验证及其含义有意见会话跟踪策略上的身份验证策略。
    • 谢谢,这很有帮助。我将等待几周,看看其他人是否有答案,否则我会将其标记为解决方案
    【解决方案2】:

    我想在@Christopher Schultz 的回答中添加一些细节。

    • 如果您的应用程序不使用客户端证书,那么使用 cookies 可能更方便。正如克里斯托弗指出的那样,原因是会话可能无效。不过,我没有对此进行测试,这只是一个理论上的印象。
    • 如果使用客户端证书,我已验证通过 SSL 连接跟踪会话完全有效。我已经这样做了一段时间,我没有发现任何问题,也没有发现意外的错误/注销,也没有发现用户必须再次登录的繁琐过程。在我看来,在某些情况下,SSL 甚至可能是一种更清洁的方式来保持 会议。请注意,开发人员可能必须保持一些安全性 使用 cookie 时的注意事项(例如 HttpOnlycookie secure flag...)。我并不是说这是选择 SSL 的理由 跟踪,因为开发人员可能必须保持一些安全性 SSL 跟踪会话的注意事项,我只是说我是 目前不知道它们,而我知道 cookie 的。
    • 如果您选择 SSL 跟踪并且您正在使用 JSF (Java EE),例如@ViewScopeds,那么你在使用不安全的 HTTP 时会遇到问题,因为如果没有 TLS/SSL,JSF 将无法跟踪会话。因此,如果您需要具有需要跟踪会话的范围的 JSF,并且需要对您的应用程序进行 HTTP 访问,那么您应该使用 COOKIE 跟踪。另一方面,如果您总是使用 HTTPS,或者不需要,例如@ViewScoped,那么 SSL 跟踪就完全没问题了。

    【讨论】:

    • 哈!不安全的 HTTP... 很古怪。 :) 关于 TLS 证书不能通过非安全 HTTP 工作的要点。听起来很愚蠢,但如果您的会话跟踪机制需要 TLS,但您允许使用会话的不安全(比如预身份验证)访问,您可能会遇到麻烦。
    猜你喜欢
    • 2013-09-22
    • 2012-05-17
    • 2016-07-04
    • 2011-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多