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