网络安全 - 在 https 中使用 cookie

信息安全 tls 饼干
2021-08-26 17:54:51

我正在上网络安全课程,讲师告诉我,当今大多数网站都使用 https 进行身份验证,然后使用纯文本的 cookie(身份验证令牌)来跟踪用户。

我想确认这一点。例如,当我使用 Amazon.com 时,如果我之前登录过,亚马逊会显示一些与我的历史相关的内容。为此,他们必须使用 cookie。但是当我点击帐户时,会打开一个 https 页面。如果我正在查看我的帐户详细信息,为什么亚马逊会选择以纯文本形式发送 cookie(充当身份验证令牌)?如果我可以通过网络收听,我就不能窃取 cookie 并劫持某人的会话吗?

我的假设是,像亚马逊这样的网站有多个 cookie,有些是用于不需要 https 的页面(如主页),但仍想跟踪用户历史;其他用于跟踪用户之前是否经过身份验证(因此用户不需要再次输入密码),并且这种类型的 cookie 必须始终通过 https 发送。

谁能证实我的假设?(我相信我的导师可能并不完全正确)

3个回答

这可以通过两个 cookie 以相对安全的方式实现。

一个设置安全标志,将包含您的 HTTPS 会话详细信息,并在购买时用于整个结帐过程。所述安全标记确保了浏览器只发送在由SSL / TLS保护的连接的饼干(即使用HTTPS协议)。

另一个没有设置此标志,并将存储 HTTP 会话详细信息。存储在服务器端的会话详细信息可以是查看的项目,或者如果您以前登录过,它可以将您的会话绑定到一个帐户。这就是当您在没有登录的情况下返回时网站显示Welcome John时使用的内容。

为此,应该没有办法从不安全的会话 cookie 中确定安全会话 cookie 的值。

不安全的 cookie 可用于进入结帐或帐户详细信息页面,然后需要通过 HTTPS 登录,然后设置安全会话 cookie。这将阻止MITM 攻击获取 cookie,就好像攻击者窃取了不安全的 cookie,他们能做的最糟糕的事情就是改变用户的浏览历史,或者从购物篮中添加/删除东西。如果以这种方式实现,则假设用户会在完成结账之前检查复制到其安全会话的购物篮项目是否是他们实际想要订购的项目(或者他们会阅读确认电子邮件并稍后取消项目)。

从您的问题中不清楚您的讲师是指使用上述良好做法仔细发送纯文本 cookie,还是作为如何不这样做的坏例子。如果是后者,许多网站实际上只使用 HTTPS 保护某些页面,例如登录和卡片详细信息页面,但随后也在 HTTP 页面上继续使用相同的身份验证或会话 cookie,而没有意识到这个 cookie 值是在清晰并且可以被适当放置的攻击者读取。

实际上,如果站点完全是 HTTPS,那么整个站点都是加密的(标题、cookie 和所有)。在此处了解有关 SSL的更多信息

对于亚马逊,他们基本上混合使用安全的私人数据(您登录的会话)和不安全的“私人”数据(您的 IP 地址)。

网站可以通过两种基本方式“跟踪”您所描述的内容,这样当您第一次访问 Amazon.com 时,您会访问非 SSL 主页,它可能会“神奇地”向您显示一堆建议的项目。

  1. 存储本地(在您的机器上)cookie 并将该 cookie 发送到亚马逊说,“嘿,这是我”。此 cookie 可以加密或不加密,并且取决于 cookie 中实际存储的信息,它可能会或可能不会存在安全风险。
  2. 一个站点也可以做到这一点,而无需在本地存储任何东西。他们通过简单地将您的 IP 地址(作为任何 HTTP 请求的一部分发送 - 以纯文本形式发送)与它为您和 volia 存档的匹配 IP 绑定来做到这一点。

虽然您的亚马逊示例不发送安全的纯文本 cookie,因此您所描述的中间人攻击的风险不大,但这些类型的攻击可能会发生 - 特别是如果cookie 未设置安全标志”。

注意:你可以通过使用像wireshark这样的数据包嗅探器甚至只是像firebug这样的浏览器调试器来检查所有这些东西(查看http / https请求,查看cookie等)。

Cookie 可用于会话管理和跟踪用户行为。

许多 cookie 可以由单个网站放置,每个网站都提供不同的功能。取决于如何使用 cookie 的实现。有些可以使用安全和 HTTPonly 标签放置。

社交网站和其他网站展示跟踪用户行为的广告也与电子商务网站有联系。

因此,根据我的说法,一些 cookie 对于广告来说是不安全的,或者许多 cookie 在不同的域之间共享,例如,Facebook 显示了我上次在亚马逊上看到的广告。或者只是我在其他一些网站上向我展示了我对某些产品的谷歌搜索。虽然有些对于用户身份验证、付款、用户个人和银行信息是安全的.. 等