【问题标题】:SECURE flag not appearing for JSESSIONID cookie未出现 JSESSIONID cookie 的 SECURE 标志
【发布时间】:2019-08-05 22:32:32
【问题描述】:

应用程序部署在 AWS 上并在端口 80 上提供服务,ELB 将该 80 转发到 443。Spring 安全性用于创建带有安全标志集的 cookie 的会话。当我点击应用程序主机名时,我可以看到设置了安全标志,如下所示。

curl -I 目标主机名

设置 Cookie:JSESSIONID=XXXXXXXX;路径=/;安全的; HttpOnly

但是当我直接点击 EC2 IP(使用 curl)时,我可以看到未设置安全标志。

curl -I target_ec2_ip

设置 Cookie:JSESSIONID=XXXXXXXX;路径=/; HttpOnly

为什么会发生,谁能解释一下?

【问题讨论】:

  • 当我从浏览器使用 IP 访问应用程序时,我在 chrome 开发人员工具中看到一个不安全的 cookie,但是当我使用主机名访问应用程序时,我看到设置了安全标志。我正在使用弹簧安全。任何建议。

标签: amazon-web-services spring-security


【解决方案1】:

我将假设您在 ELB 终止 SSL,并且您正在通过 HTTP(端口 80)直接联系 EC2 实例。在这种情况下,以下适用:

RFC 6265:

如果 cookie 的仅安全标志为真,则请求 uri 的方案必须表示“安全”协议(由用户代理定义)。

注意:本文档未定义“安全”协议的概念。通常,如果协议使用了传输层安全性,例如 SSL 或 TLS,用户代理会认为该协议是安全的。

MDN doc 更明确:

不安全的网站 (http:) 无法再使用“安全”指令设置 cookie(Chrome 52+ 和 Firefox 52+ 中的新功能)。

【讨论】:

  • 那么你的意思是即使设置了安全标志它也不会出现在上面的场景中?在这种情况下,cookie 也可能被 MITM 攻击窃取。如何预防?
猜你喜欢
  • 1970-01-01
  • 2016-01-22
  • 2013-02-13
  • 2021-01-04
  • 2016-10-30
  • 2023-03-17
  • 1970-01-01
  • 2012-12-12
  • 2017-01-08
相关资源
最近更新 更多