问题描述

小弟负责开发公司的一个短信发送功能。近日,发现短信接口被攻击者恶意调用,使用的 User-Agent 是 curl,每次使用的 IP 地址不一样,每日 POST 发送过来的手机号码也不一样。

我猜测,攻击者是使用代理IP发送请求的。这种情况下,如何做好服务端的防御工作呢?

问题解答

1楼(蜻蜓代理用户)

建议做如下的限制:

  1. 添加验证码,比如:图形验证码、滑动验证码。这是最简单有效的。
  2. 单个 ip 请求限制
  3. 限制单个号码短信发送次数,限制单个 ip 单日短信发送次数
  4. 设置单日发送超量告警。比如:今天短信发送条数超过1000条,则报警通知。这个值需要根据你们自己的业务情况作调整

基本做到上面这些,就没什么问题了。如果验证码被突破了,则可以增加验证码的难度,或者使用其他类型的验证码。

2楼(未知网友)

攻击者一般就是利用代理IP来刷你的短信接口的。现在网上很少找到各种代理IP。一般就下面这几种途径:

  1. 从网上获取免费代理IP;
  2. 肉鸡;
  3. 拨号重新换IP;
  4. 通过请求头伪造 IP;

最简单的办法,当然是添加图形验证码。但也有其他方式。

比如,登录页面,需要获取登录验证码。这个时候,在这个页面添加一个特殊的请求,比如:/special.jpg。用户发送这个请求后,记录用户此时的ip。当用户请求短信接口,查看这个用户是否请求过 /special.jpg 这个接口。

通过上面说的简单方法,可以识别普通用户还是攻击者。

转载请注明