- 01 安全隐患
- 02 安全策略
- 03 验证码(以腾讯云为例)- 03.01 新建验证- 03.02 动态引入验证码 JS- 03.03 创建验证码对象- 03.04 后端验证服务(接入票据校验)
- 04 短信(以腾讯云为例)- 04.01 短信服务使用流程- 04.02 后端服务接入- 04.03 如何防止短信轰炸
为什么我们希望研发人员重视安全问题?
- 保护用户数据 随着数据泄露和隐私侵犯事件的增多,用户越来越关心他们的个人信息是否安全。如果一个产品或服务的安全性不足,可能会导致用户的敏感信息被泄露,从而损害公司的声誉和业务。
- 法律责任 许多国家和地区都有关于数据保护和隐私的法律。如果公司的产品或服务存在安全漏洞,可能会面临法律诉讼和罚款。
- 经济成本 当一个系统被黑客攻击或出现其他安全问题时,公司可能需要支付大量的费用来修复问题、通知受影响的用户、进行公关处理等。
- 业务连续性 对于依赖第三方服务的系统,如发送短信、货币支付等,如果这些服务出现问题或被攻击,可能会影响到整个系统的正常运行,从而导致业务中断。
- AI对话的安全性 随着AI技术的发展,越来越多的产品开始使用AI对话功能。如果这些功能存在安全漏洞,可能会导致恶意用户利用AI进行欺诈或其他非法活动。
- 信任和品牌价值 一个安全可靠的产品或服务可以增强用户的信任,从而提高品牌的市场价值。反之,安全问题可能会导致用户流失,对公司的长期发展造成不利影响。
- 技术趋势 随着技术的发展,新的安全威胁也在不断出现。研发人员需要持续关注这些威胁,并确保他们的产品能够抵御这些威胁。
本篇文档,我们就带大家一起来关注一下业务逻辑安全问题:短信安全。
在乐述云享系统中,接入的是腾讯云短信(Short Message Service,SMS)服务,主要用于账号注册、密码找回、解散社群、删除专栏等功能,以验证用户的真实身份。
下图是短信的业务请求流程。
既然使用的是第三方提供的服务,那作为使用者,我们就需要关注一下服务的价格。
01 安全隐患
先看一下,一个不安全短信功能,可能会面临什么风险:
- 骚扰到用户 没有对短信发送频率限制,容易被利用来发送短信炸弹,骚扰到用户。
- 经济损失 由于每条短信都需要给服务商缴纳费用,因此如果被攻击者盗刷短信服务,会直接造成没必要的经济损失。
- 无法验证操作者身份 短信验证码主要用于验证操作用户是否是账号拥有者本人,若验证码能够被破解,可能会造成一些无可挽回的操作。
- 企业名誉受损 如果发送的短信内容,用户可以随意更改,或者在短信内插入自定义内容,这可能会导致攻击者以企业的名义发送广告或非法言论给其他人,将会给企业造成不可估量的损失。
02 安全策略
为了避免以上问题,在设计发送短信的业务逻辑中应遵循以下原则:
- 在短信发送前可以设置一个验证码校验环节,以有效地避免攻击者直接调用接口进行发送短信的成本。 在乐述云享中使用的是腾讯云提供的验证码功能,验证方式有多种可选。
这里一定要注意,验证码依旧是需要付费的,但这并不是多此一举,这种验证码叫做行为验证可以帮助我们解决很多业务安全问题。
登录注册:有效防止撞库攻击、阻止注册机批量注册小号。
活动秒杀:有效拦截刷单操作,防止自动机刷取福利券。
点赞发帖:有效解决广告屠版、恶意灌水、刷票问题。
数据保护:有效防止自动机、爬虫盗取网页内容和数据。
针对来源 IP 和手机号频率限制,单个 IP 针对大量手机号调用进行次数限制,防止攻击者使用同一个 IP 进行批量发送。
单个手机号在一定时间段内进行次数限制,降低手机号被破解的可能性,增加攻击者的时间成本。
手机验证码尽可能长一点,不使用4位数字短信验证码,以降低被破解成功的概率。
手机和验证码尝试三次失败后设置为失效状态,避免被撞库。
验证码设置有效期,超过一定时间后,需要重新发送,以降低被破解的概率。
防止短信内容被用户控制。
使用腾讯云短信需要遵守相关要求,短信正文需要提前申请,也就是我们自己也没有办法随意定制,这就完全避免了相关风险。
... ...
想要了解更多PHP开发的安全问题可以关注我哟,或者加入下面的社群也是ok的,
【社群】PHP开发(安全问题) - 乐述云享 (aleshu.com)
业务逻辑安全问题-短信安全 - 乐述云享 (aleshu.com)
版权归原作者 one行feng 所有, 如有侵权,请联系我们删除。