40-系统攻防架构设计二(短信/邮件防攻)
xiangliheart
xiangliheart
发布于 2022-07-15 / 12 阅读 / 0 评论 / 0 点赞

40-系统攻防架构设计二(短信/邮件防攻)

短信/邮件防攻击设计

如果系统内涉及短信、邮件的发送业务,并且此业务暴露在外网环境下,则一定要考虑被攻击的可能性。

短信防攻击设计如图7-2所示。当用户点击页面上的“发送短信”按钮之后,为了防止机器人攻击,应先弹出验证码校验窗口,要求用户证明自己是人类,待验证码验证通过后,则立即禁用“发送短信”按钮,并进行倒计时,防止用户反复点击,这样看似简单的设计,却可以防止99%的用户的主动攻击行为。

1.频率限制策略

为了防止短信接口的使用存在缺陷(例如,客户端并没有增加图片验证码,也没有做任何防攻击的措施),导致短信接口被恶意攻击,短信系统必须具有主动防御能力,控制短信“发送短信频率”,通常需要包含以下5种频率控制方式。

(1)   对同一个应用,每个自然日发送短信条数不得超过N条。

(2)   对同一个手机号,30秒内发送短信条数不得超过N条。

(3)   对同一个手机号,1小时内发送短信条数不得超过N条。

(4)   对同一个手机号,1个自然日内发送短信条数不得超过N条。

(5)   相同内容短信对同一个手机号,X秒内发送短信条数不得超过N条。

邮件系统采用与短信系统相同的防御设计即可,增加邮件发送频率限制,能够在发生邮件接口攻击时,将损失降到最低。

2.防劫持策略

为了防止短信/邮件发送接口的请求数据被非法截取和利用,需要将接口报文进行加密和混淆处理。由于短信与邮件接口的处理方式相

同,因此这里仅以短信发送举例。例如,原短信接口的请求报文为

{mobile:'18704483052',content:' 123456',template:'S01',time:'2021-07-07

00:22;33'}。

(1)     选用HTTPS进行交互,防止前后端交互数据被网络抓包获取。但是,无法防止黑客在客户端获取,如浏览器的开发者模式。

(2)     对请求参数进行混淆,否则攻击人员很容易猜测报文交互的具体含义。例如,将以上数据修改为{m:'18704483052',c:'

123456',t:'S01',t:'2021-07-07 00:22:33'},参数避免使用完整的英文,而是采用更加难以猜测的参数命名。

(3)     对请求数据进行混淆,虽然参数混淆后会加大攻击者分析的难度,但是依然可以比较容易猜测出m代表手机号,因此可以针对手机

号参数继续混淆。例如,将手机号拆分为多个部分,即

{m0:'18',m1:'70',m2:'44',m3:'83',m4:'052'},服务端接收数据后再进行还原。这样,攻击者就很难猜测参数的具体含义了。

(4)     对请求报文做整体加密,防止攻击人员劫持利用。

图7-2 短信防攻击设计


评论