前后端分离开发的时候,服务端 api 一般都喜欢用 jwt,大家都一直在提 token 被盗取了怎么办? token 是如何被盗取的呢?可能就是人为的泄露账号密码?可能是被钓鱼,电脑被挂马? 网上好多人说用 fidder 抓取之后可以看到 token,我想知道是咋看到的,是你在用户端安装了 fidder 用控制了人家的电脑吗? 还有木有别的泄露的可能? 求教。
1
tinyuu 2020-10-22 11:15:10 +08:00 via iPhone
浏览器控制台就能看见 f12 。都控制电脑了。
|
2
eason1874 2020-10-22 11:19:46 +08:00
能咋办,token 被盗跟 cookie 被盗就一回事。
只能定期续存和注销,没别的办法。在存续期间被盗就是被盗了,服务端没办法分辨出来是不是被盗了,除非绑定 IP,IP 一变就失效,但是这样用户就要经常登录了。 |
3
qiayue 2020-10-22 11:22:10 +08:00
想盗他人的 token 还是有办法的,举例你开发一个很好用的 chrome 插件,然后加载一些恶意代码……
|
4
wunonglin 2020-10-22 11:23:30 +08:00
用时间和地点去验证。时间大于小于多少,和在不在获取 token 的城市,用来判断是否注销掉。
但是可惜的是 jwt 没有注销的说法 |
6
TimePPT 2020-10-22 11:29:04 +08:00
最常见的是中间人,浏览器带后门的插件,电脑某些暗戳戳软件、家庭路由有些无良厂家、甚至运营商自己监守自盗(之前微博有传出被某些小地方运营商搞劫持……)
|
7
TimePPT 2020-10-22 11:30:35 +08:00 2
比较好的方式全程 https,还可以做设备指纹验证,浏览器指纹也能做,就是效果差一些,成本也高点。
|
8
wunonglin 2020-10-22 11:31:50 +08:00
@gaorenhua #5
就是类似这样的,逻辑你自己想就可以了。但是最好别单用 jwt,不然没法注销。 据说 webRTC 是能获取电脑网卡的 ip 地址还是 mac 地址我忘了,你可以用来判断是不是本机这样样子。我没研究过,你可以看看 |
10
zsdroid 2020-10-22 11:46:21 +08:00
那账号密码被盗怎么办。这种不需要在意。毕竟 token 是有效期的。
|
12
WishMeLz 2020-10-22 12:00:49 +08:00
token 加上混淆的呀。在加上一个时间限制,基本没问题
|
13
wjhjd163 2020-10-22 12:11:28 +08:00 via Android
用户自身防护做不好情况下
怎样的方案都无效 Chrome 保存本地的密码都是可以直接取出来的 https+token 就足够了 |
14
KuroNekoFan 2020-10-22 12:20:21 +08:00 1
一般用户谁装 fiddler,另外就是常见的 jwt toolkit 应该可以配置隐藏掉 header,你们开发者再约定非默认的算法和类型,实在不行上面有提到,把 payload 再编码一下
|
15
sujin190 2020-10-22 12:46:48 +08:00
各种免费 wifi,路由器,手机电脑内的木马软件,各种防火墙,各种骨干网节点,都能看到啊,网页的还有各种劫持,现在看来估计是各种免费 wifi 和路由器记录的日志危害最大了,有 https 好一些
|
16
fu4k 2020-10-22 12:52:31 +08:00 1
JWT 存在几个潜在风险点,简单说两个:
1.JWT 支持将算法设置为 None,此时签名被置空,可以伪造任意 Token 2.如果你的密钥强度不够,可以被很快的暴力破解 |
17
Cbdy 2020-10-22 13:09:29 +08:00
别用 jwt
|
18
wanguorui123 2020-10-22 14:17:53 +08:00
1 、纯粹的 Token,只能通过过期时间来判断。
2 、为了安全可以加 Redis 之内的服务,在服务端缓存一些登录状态用来加强判断的准确性,如果异常就提示用户修改密码 |
19
redtea 2020-10-22 14:25:35 +08:00 1
每次请求返回一个随机的 csrf token,下次请求必须传这个 csrf token,服务端校验是否之前生成。这样基本能杜绝。
|
20
gzf6 2020-10-22 15:21:16 +08:00
Web Authentication ?
|
21
unco020511 2020-10-22 16:30:40 +08:00
https 基本都 ok 了,然后定期刷新 token
|
22
liaoliaojun 2020-10-22 16:51:13 +08:00
设置 http only,客户端无法获取到 cookie,就不能从 web 端盗取了
|
23
vzyw 2020-10-23 00:09:19 +08:00 via iPhone
jwt 可以注销的 后端把 jwt 整个字符串存 redis 里 先判断 redis 里也没有这个 jwt string 再验证 jwt 。注销就是删除这个 jwt
@wunonglin |
24
nong99 2020-10-23 07:09:35 +08:00 via iPhone
|