PHP寫的API如何防止拒絕服務的攻擊?

來源:互聯網
上載者:User
現在很多公司都是用PHP寫API來對接前端的web/iOS/Android,雲和端是完全分離的,無法做到動態協商。如果雙方都協定一個靜態KEY,那麼在web的js中是透明的,就算是ios/android也很容易通過截包或反編譯獲得這個KEY。
現在一般的雲端服務能接受的最大並發也幾千,如果被拒絕服務的攻擊給佔滿勢必會影響正常使用者的訪問。尤其是用類似websocket這樣的通訊協定,一旦建立了串連就會一直佔著坑,隨便寫一段簡單的多線類比串連來騷擾一下,伺服器就基本攤了。
請問如何在PHP端適當的防止此類攻擊?不必太極致,把癱瘓控制在10分鐘內一般的小型應用應該還是可以接受的。

回複內容:

其實題主說的問題 普遍存在 從兩方面可以說下

代碼方面:
程式員的經驗吧 。一般就是代碼方面黑白名單 其次就是介面逾時的處理 剩下的就是一些規範。其實沒有什麼特別好的經驗 。更多來說 一般的小駭客也不會直接DDOS你 。要是真的DDOS 你 這些基本也夠了。 更多是日常維護的對資料異常的處理。

其實 你不用擔心被惡意攻擊。介面這東西 說白了 也是POST GET 。只要你在處理介面資料時候過濾 保證資料的安全性 一般的漏洞是可以防住的 。 一般的三流駭客基本都會擋在這個門口。 除非你網站很出名 那你可以找安全公司做下測試 。基本也就OK 應對DDoS攻擊,更多的是系統層面的防護,PHP寫的API介面一般是業務上的,業務上的PHP能做的就是不要掛,做到盡量快的響應
另外考慮到機器負載能力,基本上這類問題就需要用到流量控制,限定一個終端對於某個API一段時間內訪問次數1.認證介面接收一個用戶端時間和一個簽名。首先驗證用戶端時間與伺服器時間在一定誤差範圍內(比如±5分鐘,誤差範圍越大越不安全),然後驗證簽名是否一致(簽名演算法必須使用用戶端時間),成功後返回一個token和一個隨機字串。
2.除認證介面之外的所有介面必須接收token和一個簽名。首先檢查token是否合法,然後驗證簽名是否一致(簽名演算法必須使用認證介面返回的隨機字串)。
3.所有介面做策略:
1) 驗簽失敗一定次數(1次,2次,3次,越大越不安全),屏蔽ip。
2) 單ip調用超限(最好根據業務需要,針對每個介面做不同的限制。比如登入,可以要求5次/天),屏蔽ip。ip白名單太頻繁的就封IP唄不用這麼麻煩,使用iptables
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.