發送短信驗證碼沒有判斷圖形驗證碼是否正確,被攻擊,臨時用nginx限制ip訪問

在項目中,註冊頁面上發送短信驗證碼沒有判斷圖形驗證碼是否正確,就發送驗證碼了,結果被攻擊了,nginx的access.log看到訪問的ip,並將訪問過多的ip選擇出來,臨時用nginx限制ip訪問。後面修改代碼,重新發版。

但是,對於套了一層 CDN 或代理的網站,通過 iptables 、 Nginx 的 deny 指令或者是程序來 控制掉這些惡意請求,這些方法可能就失效了。

 

1拿到用戶真實 IP,只要在 Nginx 的 http 模塊內加入如下配置:

1

2

3

4

5

#獲取用戶真實IP,並賦值給變量$clientRealIP

map $http_x_forwarded_for  $clientRealIp {

        ""      $remote_addr;

        ~^(?P<firstAddr>[0-9\.]+),?.*$  $firstAddr;

}

 

2通過對 $clientRealIP 這個變量的判斷,Nginx 就能實現隔山打牛的目的,而且規則簡單易懂:

Shell

1

2

3

4

5

6

7

8

#如果真實IP爲 121.42.0.18、121.42.0.19,那麼返回403

if ($clientRealIp ~* "121.42.0.18|121.42.0.19") {

        #如果你的nginx安裝了echo模塊,還能如下輸出語言,狠狠的發泄你的不滿(但不兼容返回403,試試200吧)!

        #add_header Content-Type text/plain;

        #echo "son of a bitch,you mother fucker,go fuck yourself!";

        return 403;

        break;

}

把這個保存爲 deny_ip.conf ,上傳到 Nginx 的 conf 文件夾,然後在要生效的網站 server 模塊中引入這個配置文件,並 Reload 重載 Nginx 即可生效:

1

2

#禁止某些用戶訪問

include deny_ip.conf;

如果再想添加其他要禁止的 IP,只需要編輯這個文件,插入要禁止的 IP,使用分隔符 | 隔開即可,記得每次修改都需要 reload 重載 Nginx 才能生效。

 

 

 

參考資料:網站使用CDN之後禁止用戶真實IP訪問的方法

深圳逆時針

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