V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
shadowfish0
V2EX  ›  问与答

请问前端怎么保护接口密钥?

  •  
  •   shadowfish0 · 2021-06-06 22:33:01 +08:00 · 1593 次点击
    这是一个创建于 1251 天前的主题,其中的信息可能已经有所发展或是发生改变。

    比如现在有一个功能,是要发个邮件,那前端应该是通过接口把这个请求给后端,但是肯定要进行一下鉴权吧,不然随便谁通过接口都可以发邮件,我现在就用的私钥+timestamp md5 加密的办法来做这个鉴权,但是前端密钥都是明文给出的,又感觉不太安全

    11 条回复    2021-06-07 17:54:29 +08:00
    IvanLi127
        1
    IvanLi127  
       2021-06-06 22:54:35 +08:00 via Android
    前端负责保存,不负责保护。要保护的东西都给后端处理,前端保存后端给的临时授权凭据
    shadowfish0
        2
    shadowfish0  
    OP
       2021-06-06 23:03:32 +08:00
    @IvanLi127 那这个临时授权凭据怎么拿到呢,我们自己能拿到,别人不也可以通过一样的接口拿到嘛,这边我想不通了
    airyland
        3
    airyland  
       2021-06-06 23:14:06 +08:00
    先纠正 md5 是加密算法这一点。
    然后鉴权这一步首先得登录,别人没有登录账密怎么能通过一样的接口拿到,难道你的密钥不区分用户?
    shadowfish0
        4
    shadowfish0  
    OP
       2021-06-06 23:19:24 +08:00
    @airyland 区分的,就是怕登录用户本人用自己的 token 去调用这个接口
    airyland
        5
    airyland  
       2021-06-06 23:21:27 +08:00
    @shadowfish0 这是如何限制的问题,不是鉴权的问题了。
    creedowl
        6
    creedowl  
       2021-06-07 00:37:37 +08:00 via Android
    只要你在浏览器实现了,一定有办法模拟整个流程,哪怕用各种加密混淆方法也就是增加难度,实在不行也可以用 puppeteer 这类工具模拟实现。所以只能尽量限制
    Mithril
        7
    Mithril  
       2021-06-07 00:40:39 +08:00
    前端为何要保护接口密钥。。。
    限流肯定是后端做的啊,怎么可能放到前端做。
    labulaka521
        8
    labulaka521  
       2021-06-07 01:34:13 +08:00 via iPhone
    发邮件前先展示一个验证码
    wd
        9
    wd  
       2021-06-07 07:14:14 +08:00 via iPhone
    @shadowfish0 那就是保护接口,不是保护密钥.. 接口防止滥用有很多方法你可以搜搜看...
    IvanLi127
        10
    IvanLi127  
       2021-06-07 10:16:12 +08:00
    @shadowfish0 是的,你能拿到,别人用同样的流程也能拿到。但至少保护接口密钥了,如果你还想保护这临时授权凭据,那你得搞 u 盾之类的东西了, 如果你对这类东西还不放心,可以开设线下人工柜台。不要用自助终端,要人工的。

    其实你能做的只有把权限大的 token 换成权限小的,把长期的换成短期的,缩小泄漏后带来的风险,没办法做到完全安全的。 接口限制的是用户权限,如果用户有权限调接口你们却不想让用户调,那是产品设计缺陷。
    rationa1cuzz
        11
    rationa1cuzz  
       2021-06-07 17:54:29 +08:00
    没必要啊,怕人随便发做鉴权和频率限制
    比如:只能登陆的用户且每分钟发送一次(每天只能发 10 次?),或者多次调用使用验证码或者其他手段限制,
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1030 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 19:23 · PVG 03:23 · LAX 11:23 · JFK 14:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.