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

2021-06-06 22:33:01 +08:00
 shadowfish0

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

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

其实你能做的只有把权限大的 token 换成权限小的,把长期的换成短期的,缩小泄漏后带来的风险,没办法做到完全安全的。 接口限制的是用户权限,如果用户有权限调接口你们却不想让用户调,那是产品设计缺陷。
rationa1cuzz
2021-06-07 17:54:29 +08:00
没必要啊,怕人随便发做鉴权和频率限制
比如:只能登陆的用户且每分钟发送一次(每天只能发 10 次?),或者多次调用使用验证码或者其他手段限制,

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

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

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

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

© 2021 V2EX