比如现在有一个功能,是要发个邮件,那前端应该是通过接口把这个请求给后端,但是肯定要进行一下鉴权吧,不然随便谁通过接口都可以发邮件,我现在就用的私钥+timestamp md5 加密的办法来做这个鉴权,但是前端密钥都是明文给出的,又感觉不太安全
1
IvanLi127 2021-06-06 22:54:35 +08:00 via Android
前端负责保存,不负责保护。要保护的东西都给后端处理,前端保存后端给的临时授权凭据
|
2
shadowfish0 OP @IvanLi127 那这个临时授权凭据怎么拿到呢,我们自己能拿到,别人不也可以通过一样的接口拿到嘛,这边我想不通了
|
3
airyland 2021-06-06 23:14:06 +08:00
先纠正 md5 是加密算法这一点。
然后鉴权这一步首先得登录,别人没有登录账密怎么能通过一样的接口拿到,难道你的密钥不区分用户? |
4
shadowfish0 OP @airyland 区分的,就是怕登录用户本人用自己的 token 去调用这个接口
|
5
airyland 2021-06-06 23:21:27 +08:00
@shadowfish0 这是如何限制的问题,不是鉴权的问题了。
|
6
creedowl 2021-06-07 00:37:37 +08:00 via Android
只要你在浏览器实现了,一定有办法模拟整个流程,哪怕用各种加密混淆方法也就是增加难度,实在不行也可以用 puppeteer 这类工具模拟实现。所以只能尽量限制
|
7
Mithril 2021-06-07 00:40:39 +08:00
前端为何要保护接口密钥。。。
限流肯定是后端做的啊,怎么可能放到前端做。 |
8
labulaka521 2021-06-07 01:34:13 +08:00 via iPhone
发邮件前先展示一个验证码
|
9
wd 2021-06-07 07:14:14 +08:00 via iPhone
@shadowfish0 那就是保护接口,不是保护密钥.. 接口防止滥用有很多方法你可以搜搜看...
|
10
IvanLi127 2021-06-07 10:16:12 +08:00
@shadowfish0 是的,你能拿到,别人用同样的流程也能拿到。但至少保护接口密钥了,如果你还想保护这临时授权凭据,那你得搞 u 盾之类的东西了, 如果你对这类东西还不放心,可以开设线下人工柜台。不要用自助终端,要人工的。
其实你能做的只有把权限大的 token 换成权限小的,把长期的换成短期的,缩小泄漏后带来的风险,没办法做到完全安全的。 接口限制的是用户权限,如果用户有权限调接口你们却不想让用户调,那是产品设计缺陷。 |
11
rationa1cuzz 2021-06-07 17:54:29 +08:00
没必要啊,怕人随便发做鉴权和频率限制
比如:只能登陆的用户且每分钟发送一次(每天只能发 10 次?),或者多次调用使用验证码或者其他手段限制, |