1. 程式人生 > 實用技巧 >java介面如何有效防止惡意請求

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"); }