我们在 Amazon 上运行了一个基于 Java 的应用程序,并已配置我们的 Amazon ELB 以成功连接到它们。但是,我们看到 Cookie 标志未设置为安全。
Name Value Domain Path Expires Secure
AWSELB lkajsldf test.com / Session No
我如何确保 cookie 的安全?
答案1
我刚刚重新检查了 AWS 文档,情况仍然如此 - 你无法使此 cookie 安全或仅 httpOnly。
http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/elb-sticky-sessions.html
但是,您现在可以选择让 ELB 依赖于 Web 服务器发出的 cookie,因此您可以在每个 Web 服务器(都具有相同的名称)上配置自己的服务器级 cookie,并为每个 Web 服务器配置一个唯一的值,并让 Web 服务器包含 httponly 和 secure 标志。
答案2
直接从 AWS 支持获取具有完全相同问题的票据:
请注意,HTTPOnly 标志旨在保护携带敏感信息的 cookie,并阻止 HTTP 客户端以纯文本形式发送此 cookie(安全)或防止 XSS 攻击/通过客户端脚本访问所述 cookie(HTTPOnly)。
目前 ALB 不支持 HttpOnly 标志,ALB 不支持该标志有两个原因。
- 首先,“AWSALB”cookie 不包含敏感数据或不包含用户名/密码或任何个人信息,仅用于确定向哪个后端发送请求,并且会话信息不存储在 cookie 中。
- 其次,ALB 和 CLB 发送的 cookie 内容均使用旋转密钥加密,并且只有 AWS 服务才拥有用于加密的私钥。不支持解密或修改负载均衡器生成的 cookie。有关 ALB 粘性会话的更多信息,请参阅文档 [1]。
---- 解决方法 ---
您可以使用支持基于持续时间和基于应用程序的粘性的传统负载均衡器 (CLB)。如文档 [2] 中所述,“您无法在基于持续时间的会话粘性 cookie 上设置安全标志或 HttpOnly 标志。但是,这些 cookie 不包含敏感数据。请注意,如果您在应用程序控制的会话粘性 cookie 上设置安全标志或 HttpOnly 标志,则也会在 AWSELB cookie 上设置该标志。”
话虽如此,值得一提的是,我们确实有一个正在进行的功能请求,我已将您的案例标记为该请求。我们的内部团队已了解该要求并正在努力解决。您可能已经知道,新功能需要大量的故障排除和测试,因此我无法为您提供功能请求的预计到达时间。不过,我建议您关注我们的 AWS 新功能和 AWS 博客页面 [3] 和 [4],以获取相关信息。
参考:[1] 粘性会话 -https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-sticky-sessions.html
[2] Classic Load Balancer 会话粘性 -https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-sticky-sessions.html
[3]https://aws.amazon.com/
[4]https://aws.amazon.com/blogs/aws/
答案3
我思考由于此 cookie 仅由 ELB 用于会话粘性,因此这是一个不安全的 cookie。(即没有敏感数据)。
您可以就此问题向 AWS 开具支持票。