关于 token 被盗取的问题

2020-10-22 11:04:06 +08:00
 gaorenhua

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

6404 次点击
所在节点    Java
25 条回复
tinyuu
2020-10-22 11:15:10 +08:00
浏览器控制台就能看见 f12 。都控制电脑了。
eason1874
2020-10-22 11:19:46 +08:00
能咋办,token 被盗跟 cookie 被盗就一回事。

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

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

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

据说 webRTC 是能获取电脑网卡的 ip 地址还是 mac 地址我忘了,你可以用来判断是不是本机这样样子。我没研究过,你可以看看
sarices
2020-10-22 11:42:16 +08:00
@wunonglin 维护一份黑名单就好了,要是怕太多数据可以定期清理一些过期数据
zsdroid
2020-10-22 11:46:21 +08:00
那账号密码被盗怎么办。这种不需要在意。毕竟 token 是有效期的。
zpfhbyx
2020-10-22 11:59:17 +08:00
@zsdroid 2fa 啊.
WishMeLz
2020-10-22 12:00:49 +08:00
token 加上混淆的呀。在加上一个时间限制,基本没问题
wjhjd163
2020-10-22 12:11:28 +08:00
用户自身防护做不好情况下
怎样的方案都无效
Chrome 保存本地的密码都是可以直接取出来的
https+token 就足够了
KuroNekoFan
2020-10-22 12:20:21 +08:00
一般用户谁装 fiddler,另外就是常见的 jwt toolkit 应该可以配置隐藏掉 header,你们开发者再约定非默认的算法和类型,实在不行上面有提到,把 payload 再编码一下
sujin190
2020-10-22 12:46:48 +08:00
各种免费 wifi,路由器,手机电脑内的木马软件,各种防火墙,各种骨干网节点,都能看到啊,网页的还有各种劫持,现在看来估计是各种免费 wifi 和路由器记录的日志危害最大了,有 https 好一些
fu4k
2020-10-22 12:52:31 +08:00
JWT 存在几个潜在风险点,简单说两个:
1.JWT 支持将算法设置为 None,此时签名被置空,可以伪造任意 Token
2.如果你的密钥强度不够,可以被很快的暴力破解
Cbdy
2020-10-22 13:09:29 +08:00
别用 jwt
wanguorui123
2020-10-22 14:17:53 +08:00
1 、纯粹的 Token,只能通过过期时间来判断。
2 、为了安全可以加 Redis 之内的服务,在服务端缓存一些登录状态用来加强判断的准确性,如果异常就提示用户修改密码
redtea
2020-10-22 14:25:35 +08:00
每次请求返回一个随机的 csrf token,下次请求必须传这个 csrf token,服务端校验是否之前生成。这样基本能杜绝。
gzf6
2020-10-22 15:21:16 +08:00
Web Authentication ?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/717368

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX