如何防范短信接口被恶意调用(被刷)(转)

本文转自:https://zhuanlan.zhihu.com/p/20879468

一、什么是短信轰炸(短信接口被刷)

短信轰炸一般基于 WEB 方式(基于客户端方式的原理与之类似),由两个模块组成,包括:一个前端 Web 网页,提供输入被攻击者手机号码的表单;一个后台攻击页面(如 PHP),利用从各个网站上找到的动态短信 URL 和 前端输入的被攻击者手机号码,发送 HTTP 请求,每次请求给用户发送一个动态短信。

- 被攻击者大量接收非自身请求的短信,造成无法正常使用移动运营商业务。
- 短信接口被刷通常指的就网站的动态短信发送接口被此类短信轰炸工具收集,作为其中一个发送途径。

具体工作原理如下:

(1)恶意攻击者在前端页面中输入被攻击者的手机号;
(2)短信轰炸工具的后台服务器,将该手机号与互联网收集的可不需要经过认证即可发送动态短信的 URL 进行组合,形成可发送动态短信的 URL 请求;
(3)通过后台请求页面,伪造用户的请求发给不同的业务服务器;
(4)业务服务器收到该请求后,发送动态短信到被攻击用户的手机上。

流程示例:

二、短信轰炸的防护方案

鉴于短信轰炸的发起一般都是服务器行为,应该采用如下综合手段进行防御

(1)增加图形验证
(2)单IP请求次数限制
(3)限制号码发送

(一)增加图形验证

恶意攻击者采用自动化工具,调用“动态短信获取”接口进行动态短信发送,原因主要是攻击者可以自动对接口进行大量调用。
采用图片验证码可有效防止工具自动化调用,即当用户进行“获取动态短信” 操作前,弹出图片验证码,要求用户输入验证码后,服务器端再发送动态短信到用户手机上,该方法可有效解决短信轰炸问题。

安全的图形验证码必须满足如下防护要求

- 生成过程安全:图片验证码必须在服务器端进行产生与校验;
- 使用过程安全:单次有效,且以用户的验证请求为准;
- 验证码自身安全:不易被识别工具识别,能有效防止暴力破解。

图形验证的示例:

(二)单IP请求次数限制

使用了图片验证码后,能防止攻击者有效进行“动态短信”功能的自动化调用;
但若攻击者忽略图片验证码验证错误的情况,大量执行请求会给服务器带来额外负担,影响业务使用。建议在服务器端限制单个 IP 在单位时间内的请求次数,一旦用户请求次数(包括失败请求次数)超出设定的阈值,则暂停对该 IP 一段时间的请求;若情节特别严重,可以将 IP 加入黑名单,禁止该 IP 的访问请 求。该措施能限制一个 IP 地址的大量请求,避免攻击者通过同一个 IP 对大量用户进行攻击,增加了攻击难度,保障了业务的正常开展。

(三)限制发送时长

建议采用限制重复发送动态短信的间隔时长, 即当单个用户请求发送一次动态短信之后,服务器端限制只有在一定时长之后(此处一般为60秒),才能进行第二次动态短信请求。该功能可进一步保障用户体验,并避免包含手工攻击恶 意发送垃圾验证短信。

完整的动态短信验证码使用流程

时间: 2024-08-19 15:08:33

如何防范短信接口被恶意调用(被刷)(转)的相关文章

关于手机短信接口优化

项目:目前需要支持手机号码注册,流程如下: 1)用户输入手机号码 2)点击获取手机校验码 3)收到短信息后,填入验证码.完成注册 有个问题,在项目中前期设计问题,导致短信接口被恶意调用. 调整方案: 网络提供方案: 推荐的对接方式:1.流程限定--将手机短信验证和用户名密码设置分成两个步骤,用户在注册成功用户名密码后,下一步才进行手机短信验证.(推荐)2.绑定图型校验码--将图形校验码和手机验证码进行绑定,这样能比较有效的防止软件恶意点击.(推荐) 不推荐的对接方式:3.短信发送间隔设置--设置

短信接口调用——阿里大于API开发心得

互联网上有许多公司提供短信接口服务,诸如网易云信.阿里大于等等.我在自己项目里需要使用到短信服务起到通知作用,实际开发周期三天,完成配置.开发和使用,总的说,阿里大于提供的接口易于开发,非常的方便,短信费用是计数缴纳的,作为个人开发者,我使用的服务产生的费用为0.45¥/条(10万条以下). 现在要实现一个例会短信群发通知的功能,所有被通知对象信息均存于Mysql中,应用架构采用asp.net MVC .首先准备好获取的API各项(以下各项服务参数都需要在大于官网上申请), 申请好自己的短信签名

zabbix短信接口调用出现的问题

在写调用短信网关的shell脚本的时候,发现了一个百思不得其解的问题,用浏览器访问短信接口地址是可以成功接收到短信的.但在shell 里面调用就报错了!!!在反复测试当中发现,在shell 中对特殊字符有特殊意义,这里需要把http整个部分用双引号括起来,问题就迎刃而解了.这里分享下,希望能帮助到有用短信网关出错的人

C#如何编写短信接口,以及接口的调用,包括C#.net访问web,并处理返回值的简例。

在系统的开发中我们经常会用到接口,下面给大家介绍一种短信接口的编写与调用. 我们常调用接口来完成一些信息的通知或者发送验证码,那么这些操作是如何完成的呢?来看一下详细的介绍吧! 首先呢,我们需要有一个短信的接口地址这个需要从短信接口提供商哪里购买,附带着接口文档,里面有接口地址与详细的函数,参数等说明. 然后我们就可以编写接口啦! 一.先定义一个静态的方法,返回值为字符串类型,给两个参数(短信内容,发送的手机号). 1.定义一个存放密码的变量"pwd",使用MD5进行加密一下. 2.定

zabbix短信接口调用

#!/bin/bash TIME=`date +%Y-%m-%d` KEY="UJK9rk50HD8du8JE8h87RUor0KERo5jk" username="zabbix" sign=`echo -n "vas#$KEY$TIME#$username" | md5sum | awk '{print $1}'` phone_num=$1 message=`echo -e "$2\n$3" |od -An -tx1|tr 

VB通过http调用验证码短信接口源码

通过验证码短信http调用接口,您可以很快速的在网站或者app中集成手机号验证功能,该源码只是核心代码,具体可以根据您的实际需求进行扩展. 该DEMO是VB通过http调用验证码短信接口源码: VERSION 5.00 Object = "{248DD890-BB45-11CF-9ABC-0080C7E7B78D}#1.0#0"; "Mswinsck.OCX" Begin VB.Form Form1 Caption = "Form1" Clien

kewail短信接口调用指令

短信接口调用 包体为json字符串及解析 这有可以免费注册测试的短信接口平台 原文地址:https://blog.51cto.com/14326369/2395393

zabbix实战调用短信接口报警

Server端: 脚本: /usr/local/zabbix/share/zabbix/alertscripts/sendsms.py #!/usr/bin/env python   #fileencoding:utf-8   URL = 'http://10.162.232.27/controller/task/sms'  #短信接口地址 import sys import urllib   import urllib2   import time   def sendsms(mobile,c

C#调用短信接口(通过简单的工厂模式整合多个短信平台)

using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Text; using System.Web; namespace DUANXIN { public class SendSmsFactory { public static SendSmsBase CreateFactory(string className) { S