刷短信、短信轰炸方案

这两天,平台突然遇到刷短信问题,我们这么小的平台,也被搞上。还好使用的阿里云,每个用户每天限制40条短信。

但这也不能限制这无休止的轰炸啊。第一次碰到这种问题,还是有点慌乱,项目正在重构,各种问题一团糟,很是烦恼。

不闲聊了,开始正题,时间有限,也不知道正确不(水平有限):

	分析了短信记录、nginx请求日志,确实是在刷短信。解决方法:
		1.添加手机号 '系统黑名单',限制每天10次 注册(只刷注册短信) 请求,超过10次,加入黑名单,不发短信
			sms_record_counts
				id
				mobile - 手机号
				date - 日期(20180331)
				number - 次数
				created_at
				updated_at

			CREATE TABLE `sms_record_counts` (
			  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
			  `date` int(8) unsigned NOT NULL COMMENT '日期,格式:20180331',
			  `mobile` varchar(11) NOT NULL DEFAULT '' COMMENT '手机号',
			  `number` int(11) unsigned NOT NULL COMMENT '请求发送次数',
			  `created_at` timestamp NULL DEFAULT NULL,
			  `updated_at` timestamp NULL DEFAULT NULL,
			  PRIMARY KEY (`id`)
			) ENGINE=InnoDB DEFAULT CHARSET=utf8;

			sms_blacks
				id
				mobile - 手机号
				created_at
				updated_at	

			CREATE TABLE `sms_blacks` (
			  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
			  `mobile` varchar(11) NOT NULL DEFAULT '' COMMENT '手机号',
			  `created_at` timestamp NULL DEFAULT NULL,
			  `updated_at` timestamp NULL DEFAULT NULL,
			  PRIMARY KEY (`id`)
			) ENGINE=InnoDB DEFAULT CHARSET=utf8;


		2.添加 '图形验证码',发送短信之前,先进行验证码判断
			还好项目使用的是 Laravel 这种级别框架,都有内置的 csrf token 认证。应该不是模拟 post 轰炸,猜测对方应该只能是类似爬虫这类的模拟人工操作。添加 '图形验证码',应该可以直接避免。当然,如果对方很厉害,还有 图像识别 这类的技术支持,'图形验证码' 作用也不大。(网络方面知识极度欠缺,没看过啥,只是自己直觉)

			本来考虑 '极验证',简单浏览了下,我估计2小时搞不来,所以,就先使用 '图形验证码' 试试效果。
			laravel 极验证 依赖包:http://laravelacademy.org/post/5291.html

			使用了 laravel 的依赖包:https://github.com/mewebstudio/captcha,非常简单

		3.nginx 添加 '黑名单'
			对于服务器运维的,实在是太差了,一直想学习,也没时间。等项目成功后,就学习运维、架构。
			搜索到一篇文章不错:
				https://blog.csdn.net/linuxnews/article/details/54587963


中间还涉及到一个问题:
	短信使用了 crontab,mac 本地测试,不知道修改 crontab 后,如何使之生效,搜索了不少文章:(都未生效,最后发现自己的问题)

		https://www.v2ex.com/t/412435

	这篇文章和我碰到的问题一样,总结下:
		crontab 应该是修改了就会生效,我自己的操作失误,还以为修改后,因为之前加载了配置,而导致的修改后不生效,必须重新启动。

		crontab -e 	// 编辑
		crontab -l 	// 显示

		网上搜索的停止命令:
			sudo /usr/sbin/cron stop 
		返回:
			cron: cron already running, pid: 177 

		杀死进程:
			sudo kill -9 177

		杀死后,立即又运行新的 crontab 进程

		国外有一篇文章也提到过:
			sudo launchctl unload -w /System/Library/LaunchDaemons/com.vix.cron.plist
		链接:
			https://apple.stackexchange.com/questions/266835/how-do-i-restart-the-cron-service-on-osx

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章