我读了一篇博客文章GitHub 迁移到 SSL,但仍然是 Firesheepable,声称即使该站点仅使用 https,cookie 也可以通过 http 未加密发送。他们写道,cookie 应该标有“安全标志”,但我不知道那个标志是什么样子的。
如何在仅使用 https 的网站上检查我的 cookie 仅通过加密的 https 而不是未加密的 http 发送?
我读了一篇博客文章GitHub 迁移到 SSL,但仍然是 Firesheepable,声称即使该站点仅使用 https,cookie 也可以通过 http 未加密发送。他们写道,cookie 应该标有“安全标志”,但我不知道那个标志是什么样子的。
如何在仅使用 https 的网站上检查我的 cookie 仅通过加密的 https 而不是未加密的 http 发送?
cookie 安全标志如下所示:
安全的;
而已。
这应该出现在 Http 标头的末尾:
设置 Cookie:mycookie=somevalue;路径=/安全站点/;过期=2010 年 12 月 12 日;安全的; http仅;
当然,要检查它,只需插入任何代理或嗅探器(我使用优秀的Fiddler)并观看......
*奖励:我还在那里添加了 httpOnly 属性,以防止来自 Javascript 空间的 cookie 访问,例如通过 XSS。
您可以使用 Firebug 之类的工具(Firefox 的扩展:http: //getfirebug.com/)进行检查。cookie 将显示为“安全”。
此外,如果您使用的是 Firefox,您可以查看“删除个人 Cookie”窗口以确定。
从开发的角度来看,“安全”cookie 与常规 cookie 相同,但其中有一个额外的参数。例如
SessionId=blah; path=/; secure; HttpOnly
您的开发框架有望支持轻松添加此功能 - 如果您需要帮助,请告诉我们您使用的平台。
当您在那里时,如果您没有在 Javascript 中操作 cookie,我建议您也添加 HttpOnly 标志,它将为 cookie 提供额外的保护,使其免受某些 XSS 攻击。
您也可以使用 google chrome 的插件来实现这一点,一个非常好的是Advance REST Client
示例输出如下所示:
Connection: keep-alive
Strict-Transport-Security: max-age=31536000
Content-Type: application/json
Content-Length: 104
X-Content-Type-Options: nosniff
Server: WEBrick/1.3.1 (Ruby/2.0.0/2015-12-16)
Date: Thu, 25 Aug 2016 07:15:57 GMT
Set-Cookie: your.cookie.name=some-hash-uuid-here; domain=your-backend-hostname.com; path=/; expires=Sat, 24 Sep 2016 07:15:57 -0000; HttpOnly; secure
Via: 1.1 vegur
正如您在“ Set-Cookie ”属性值的末尾看到的那样,您将看到“安全”一词在前面的答案中多次评论,但还要注意有一个名为“ Strict-Transport-Security ”的属性是值得一提。