关于 token 被盗取的问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
gaorenhua
V2EX    Java

关于 token 被盗取的问题

  •  
  •   gaorenhua 2020-10-22 11:04:06 +08:00 7069 次点击
    这是一个创建于 1840 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前后端分离开发的时候,服务端 api 一般都喜欢用 jwt,大家都一直在提 token 被盗取了怎么办? token 是如何被盗取的呢?可能就是人为的泄露账号密码?可能是被钓鱼,电脑被挂马? 网上好多人说用 fidder 抓取之后可以看到 token,我想知道是咋看到的,是你在用户端安装了 fidder 用控制了人家的电脑吗? 还有木有别的泄露的可能? 求教。

    25 条回复    2020-10-23 08:14:22 +08:00
    tinyuu
        1
    tinyuu  
       2020-10-22 11:15:10 +08:00 via iPhone
    浏览器控制台就能看见 f12 。都控制电脑了。
    eason1874
        2
    eason1874  
       2020-10-22 11:19:46 +08:00
    能咋办,token 被盗跟 cookie 被盗就一回事。

    只能定期续存和注销,没别的办法。在存续期间被盗就是被盗了,服务端没办法分辨出来是不是被盗了,除非绑定 IP,IP 一变就失效,但是这样用户就要经常登录了。
    qiayue
        3
    qiayue  
    PRO
       2020-10-22 11:22:10 +08:00
    想盗他人的 token 还是有办法的,举例你开发一个很好用的 chrome 插件,然后加载一些恶意代码……
    shakaraka
        4
    shakaraka  
    PRO
       2020-10-22 11:23:30 +08:00
    用时间和地点去验证。时间大于小于多少,和在不在获取 token 的城市,用来判断是否注销掉。

    但是可惜的是 jwt 没有注销的说法
    gaorenhua
        5
    gaorenhua  
    OP
       2020-10-22 11:25:10 +08:00
    @wunonglin 类似微信换手机登录,不是常用手机需要输入密码验证。
    TimePPT
        6
    TimePPT  
    PRO
       2020-10-22 11:29:04 +08:00
    最常见的是中间人,浏览器带后门的插件,电脑某些暗戳戳软件、家庭路由有些无良厂家、甚至运营商自己监守自盗(之前微博有传出被某些小地方运营商搞劫持……)
    TimePPT
        7
    TimePPT  
    PRO
       2020-10-22 11:30:35 +08:00   2
    比较好的方式全程 htts,还可以做设备指纹验证,浏览器指纹也能做,就是效果差一些,成本也高点。
    shakaraka
        8
    shakaraka  
    PRO
       2020-10-22 11:31:50 +08:00
    @gaorenhua #5

    就是类似这样的,逻辑你自己想就可以了。但是最好别单用 jwt,不然没法注销。

    据说 webRTC 是能获取电脑网卡的 ip 地址还是 mac 地址我忘了,你可以用来判断是不是本机这样样子。我没研究过,你可以看看
    sarices
        9
    sarices  
       2020-10-22 11:42:16 +08:00
    @wunonglin 维护一份黑名单就好了,要是怕太多数据可以定期清理一些过期数据
    zsdroid
        10
    zsdroid  
       2020-10-22 11:46:21 +08:00
    那账号密码被盗怎么办。这种不需要在意。毕竟 token 是有效期的。
    justseemore
        11
    justseemore  
       2020-10-22 11:59:17 +08:00
    @zsdroid 2fa 啊.
    WishMeLz
        12
    WishMeLz  
       2020-10-22 12:00:49 +08:00
    token 加上混淆的呀。在加上一个时间限制,基本没问题
    wjhjd163
        13
    wjhjd163  
       2020-10-22 12:11:28 +08:00 via Android
    用户自身防护做不好情况下
    怎样的方案都无效
    Chrome 保存本地的密码都是可以直接取出来的
    https+token 就足够了
    KuroNekoFan
        14
    KuroNekoFan  
       2020-10-22 12:20:21 +08:00   1
    一般用户谁装 fiddler,另外就是常见的 jwt toolkit 应该可以配置隐藏掉 header,你们开发者再约定非默认的算法和类型,实在不行上面有提到,把 payload 再编码一下
    sujin190
        15
    sujin190  
       2020-10-22 12:46:48 +08:00
    各种免费 wifi,路由器,手机电脑内的木马软件,各种防火墙,各种骨干网节点,都能看到啊,网页的还有各种劫持,现在看来估计是各种免费 wifi 和路由器记录的日志危害最大了,有 https 好一些
    fu4k
        16
    fu4k  
       2020-10-22 12:52:31 +08:00   1
    JWT 存在几个潜在风险点,简单说两个:
    1.JWT 支持将算法设置为 None,此时签名被置空,可以伪造任意 Token
    2.如果你的密钥强度不够,可以被很快的暴力破解
    Cbdy
        17
    Cbdy  
       2020-10-22 13:09:29 +08:00
    别用 jwt
    wanguorui123
        18
    wanguorui123  
       2020-10-22 14:17:53 +08:00
    1 、纯粹的 Token,只能通过过期时间来判断。
    2 、为了安全可以加 Redis 之内的服务,在服务端缓存一些登录状态用来加强判断的准确性,如果异常就提示用户修改密码
    redtea
        19
    redtea  
       2020-10-22 14:25:35 +08:00   1
    每次请求返回一个随机的 csrf token,下次请求必须传这个 csrf token,服务端校验是否之前生成。这样基本能杜绝。
    gzf6
        20
    gzf6  
       2020-10-22 15:21:16 +08:00
    Web Authentication ?
    unco020511
        21
    unco020511  
       2020-10-22 16:30:40 +08:00
    https 基本都 ok 了,然后定期刷新 token
    liaoliaojun
        22
    liaoliaojun  
       2020-10-22 16:51:13 +08:00
    设置 http only,客户端无法获取到 cookie,就不能从 web 端盗取了
    vzyw
        23
    vzyw  
       2020-10-23 00:09:19 +08:00 via iPhone
    jwt 可以注销的 后端把 jwt 整个字符串存 redis 里 先判断 redis 里也没有这个 jwt string 再验证 jwt 。注销就是删除这个 jwt
    @wunonglin
    nong99
        24
    nong99  
       2020-10-23 07:09:35 +08:00 via iPhone
    @redtea 这个方法貌似简单暴力哦~
    有两点请教:
    1 如何在服务端有效的存储这个随机 token 和检验下次请求呢
    2 但是本身也会暴露了传回的这个 csrf token 呢?
    redtea
        25
    redtea  
       2020-10-23 08:14:22 +08:00 via iPhone
    @nong99 这个方案主要是用在 post 上,防止盗 token 的人提交请求。存 redis 就行了。要防暴露的话就用 https 。暴露了也没关系,用一次就没用了。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     914 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 21:31 PVG 05:31 LAX 13:31 JFK 16:31
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86