java接口如何有效防止惡意請求


解決方法:

1.在redis數據庫db0中新建一個名為rd_sms_request_count表,表結構:

Ip:客戶請求的ip

Success_count:成功次數

Failure_count:失敗次數

Is_close:是否已經加入到防火牆黑名單,1是  0否 ,默認0

 

2.結合業務,判單哪個ip是惡意的,每當一個ip訪問接口,按照代碼返回碼,如果是都是錯誤請求,添加到redis數據庫中的Failure_count字段加1,如果都是返回正確結果,那么Success_count加1,Java后台啟動一個線程,每天統計一次rd_sms_request_count,先刪除rd_sms_request_coun表的Success_count大於0的記錄,證明這個ip是正常用戶;如果Success_count等於0而且Failure_count大於10000(規則可自定義)就通過java代碼把這個ip加入到iptables黑名單中,加入到iptables黑名單中的記錄設置為1。

 

3.把滿足條件的ip加入到iptables黑名單中核心代碼(在linux測試過可以)

String[] cmd = new String[] { "/bin/sh", "-c", "iptables -I INPUT -s 211.1.0.24 -j DROP;iptables -I INPUT -s 211.1.0.25 -j

DROP" };

        try {

        Runtime.getRuntime().exec(cmd);

       } catch (Exception e) {

           e.printStackTrace();

       }finally {

       Runtime.getRuntime().exec("service iptables save");

}    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM