cookie窃取和session劫持( 三 )

  • 中间人攻击常见的攻击方式是搭建免费wifi , 把DHCP服务器指定为攻击者ip , 在攻击者机器上可以收到所有请求 , 不仅可以获取cookie , 还可以进行脚本注入 。
  • 代理服务器/VPN翻墙用免费VPN?呵呵 。
  • 防御使用https 。使用https协议的请求都被ssl加密 , 理论上不可破解 , 即便被网络监听也无法通过解密看到实际的内容 。防御网络监听通常有两种方式:
    • 信道加密
    • 内容加密
    https是加密信道 , 在此信道上传输的内容对中间人都是不可见的 。但https是有成本的 。内容加密比较好理解 , 例如对password先加密再传输 。但是对于标识session的cookie这种标识性信息是无法通过内容加密得到保护的 。那么 , 使用https的站点就可以高枕无忧了吗?事实上 , 一些细节上的处理不当同样会暴露出攻击风险 。
    https站点攻击:双协议
    如果同时支持http和https , 那么还是可以使用网络监听http请求获取cookie 。 防御只支持https , 不支持http 。这样就好了吗?No.
    https站点攻击:301重定向
    例如www.example.com只支持https协议 , 当用户直接输入example.com(大部分用户都不会手动输入协议前缀) , web server通常的处理是返回301要求浏览器重定向到https://www.example.com 。这次301请求是http的!而且带了cookie , 这样又将cookie明文暴露在网络上了 。 防御1 把标识session的cookie设置成secure 。上面提到的secure cookie , 只允许在https上加密传输 , 在http请求中不会存在 , 这样就不会暴露在未加密的网络上了 。然后现实很残酷 , 很多站点根本无法做到所有的请求都走https 。原因有很多 , 可能是成本考虑 , 可能是业务需求 。 防御2 设置Strict-Transport-Security header , 直接省略这个http请求!用户首次访问后 , 服务器设置了这个header以后 , 后面就会省略掉这次http 301请求 。




    推荐阅读