刷短信、短信轟炸方案

這兩天,平臺突然遇到刷短信問題,我們這麼小的平臺,也被搞上。還好使用的阿里雲,每個用戶每天限制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

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