前段时间,公司的短信接口被人恶意调用,给公司的业务和成本都带来了一定的影响。为了尽快止损,想出了以下几种方案来完善发短信模块,防止短信被刷。
通过时间戳生成 token ,保证 token 5分钟之内有效。在表单页面通过后端接口提前生成好 token ,用户在5分钟之内无需更新 token
优点: 短信接口必须携带 token 才能访问,调用需要鉴权
缺点: 为了兼容用户体验, token 必须有一定的有效期,用户在短时期内无需手动刷新页面更新 token
优点: 结合方法一的 token 鉴权,可以大部分过滤掉恶意调用的行为
缺点: 黑客可通过肉机+随机手机号的方式绕过限制
通过图形验证码、人机校验,在发送短信的行为端增高门槛,杜绝自动化调用。可通过方法二的限 ip ,防止攻击者忽略人机校验,大量执行请求给服务器带来额外负担
优点: 杜绝自动化调用
缺点: 图形验证码被自动化破解的概率较高,人机校验需要一定的成本