方式一:設置客戶端IP黑/白名單
1.1客戶端所有請求,請求到代理服務器(nginx),代理服務器維護黑/白名單的ip,決定是否轉發請求;
1.2項目創建一個filter,攔截所有請求,在filter的方法中,通過request信息匹配ip黑/白名單,和url的攔截規則,決定是否合法;
有點:簡單粗暴;
確定:需要客戶端的IP固定;
應用場景:為系統的后台管理服務,客服需要人工審批和通過涉及到錢財的業務;
方式二、請求參數Sign簽名
2.1前端請求發起http請求,對參數排序,然后使用參數與私鑰拼接,在進行md5加密等方式,生成一個簽名出來,一起發給服務端,服務端這邊獲取到參數,簽名,再使用自己的私鑰進行同樣方式的加密生成簽名,比對簽名是否一致。一致則認為合法,不一致則不合法。擔水無法防止重復請求攻擊;
2.2針對上面方法升級,可以緩存每次請求的MD5值,或者每個請求添加uuid+隨機數這樣一個代表請求序號的標識。然后請求到服務端時,服務端想辦法緩存起來起來這個標識,每次請求過來時,判斷是否已經請求過。
2.3在請求的參數中和簽名結果里,假如時間戳這個參數,業務服務器一方面比較簽名結果,一方面根據時間戳,來認證請求的合法性,比如允許請求的時間戳與服務器當前時間,存在20秒的誤差等自定義規則。超過20秒的合法請求,服務器也不處理,防止惡意的重復請求。
方式三、請求方式換成Https。
http請求過程:
建立TCP連接——>客戶端向服務器發送請求命令——>服務器應答——>關閉TCP連接——>客戶端接受到服務器響應的數據
ssl(secure sockets Layer 安全套接字協議)