V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
13m
V2EX  ›  信息安全

有什么办法能让 Cookie 被人偷了也没法用?

  •  
  •   13m · 2018-06-09 13:19:28 +08:00 · 4971 次点击
    这是一个创建于 2360 天前的主题,其中的信息可能已经有所发展或是发生改变。
    是的,就是说的 XSS 攻击,假设 XSS 目的是偷目标用户的 cookies,那么有没有什么方法可以让用户的 cookies 即使被人偷了也没法被冒用?

    有没有相关的解决方案?
    18 条回复    2018-06-10 19:49:02 +08:00
    Telegram
        1
    Telegram  
       2018-06-09 13:26:28 +08:00 via iPhone   ❤️ 1
    httponly 不就完了,js 偷不到
    nikoo
        2
    nikoo  
       2018-06-09 13:28:20 +08:00
    @Telegram 这是防 Cookie 被偷吧?但如何让 Cookie 被偷了也没用呢,我也很想知道
    KomeijiSatori
        3
    KomeijiSatori  
       2018-06-09 13:28:30 +08:00
    httponly
    ebony0319
        4
    ebony0319  
       2018-06-09 13:28:51 +08:00 via Android
    @Telegram 学习了。
    letitbesqzr
        5
    letitbesqzr  
       2018-06-09 13:45:23 +08:00   ❤️ 6
    首先肯定是 httponly 防止 js 偷走 cookie,上 https 防网络层面偷走 cookie。如果是特别敏感的场景应该验证 cookie 产生的 ip 和当前 ip 是否一样,或者 useragent,如果不一样的话 要求一次二次验证,或者直接重新登陆。
    Livid
        6
    Livid  
    MOD
       2018-06-09 13:47:00 +08:00   ❤️ 2
    把 IP 和时间值也作为 cookie 的一部分。
    13m
        7
    13m  
    OP
       2018-06-09 14:00:56 +08:00
    @letitbesqzr 谢谢,受教了!

    @Livid 把时间值作为 cookie 的一部分如何操作和验证?
    gDD
        8
    gDD  
       2018-06-09 14:47:59 +08:00 via iPhone
    @13m 可以通过写代码来完成这个操作;还可以写测试用例或者手工测试来验证。
    gDD
        9
    gDD  
       2018-06-09 14:51:32 +08:00 via iPhone
    抱歉我审题不仔细了,以为是无脑问的。把时间值作为 Cookie 的生成要素之一好想不太可行,如果要定期让 Cookie 失效,那正常用户的体验也会有所影响。
    bukip
        10
    bukip  
       2018-06-09 14:56:34 +08:00
    @gDD 很多都是把时间作为 cookie 的验证要素,如果是正常用户 cookie 正常更新就完了,对正常用户的体验一般不会有影响。
    nikoo
        11
    nikoo  
       2018-06-09 15:02:16 +08:00
    @bukip "把时间作为 cookie 的验证要素" 这个时间指的是什么时间? cookie 的过期时间吗?
    Telegram
        12
    Telegram  
       2018-06-09 15:05:28 +08:00 via iPhone
    @Livid #6 ip 我觉得不妥,我手机访问,换个基站 ip 可能就变了
    lucasmi2002
        13
    lucasmi2002  
       2018-06-09 15:12:19 +08:00 via Android
    两阶段认证
    crab
        14
    crab  
       2018-06-09 15:28:27 +08:00
    不考虑 IP 重复,加个 IP 校验就可以了,起码这个模拟不来。
    但建议还是 httponly 从上层防止。
    xmdhs
        15
    xmdhs  
       2018-06-09 15:34:28 +08:00 via iPad
    @Telegram 手机似乎换基站 ip 不变的

    之前出了省 ip 好像还是原本的
    xuboying
        16
    xuboying  
       2018-06-09 15:41:19 +08:00 via Android
    基站不负责 ip 分配,一般不变。切到 wifi 倒是可能变化 ip。如果是运营商 wifi 可能不变。
    Foolt
        17
    Foolt  
       2018-06-09 18:40:03 +08:00
    如果被 XSS 攻击了,做不到 Cookie 被偷了也没办法冒用,除非你验证 IP。

    被 XSS 攻击并拿到 Cookie 说明包括 UA 在内的客户端信息完全被掌握了,这些都可以在构造 HTTP 请求的时候自定义,你服务器是验证不了真假的。
    iyangyuan
        18
    iyangyuan  
       2018-06-10 19:49:02 +08:00 via iPhone
    我也在思考这个问题
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2964 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 13:13 · PVG 21:13 · LAX 05:13 · JFK 08:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.