[英]How to make Web Service report overload?
我正在制作一個Web服務,該服務實現了接受輸入參數並將其存儲在數據庫中的功能。 (代碼是用Java編寫的,使用NetBeans IDE編寫,並部署在WebLogic服務器上。)類似這樣的東西:
@WebService
class DataSaver {
void saveData( ...data... ) {
...
}
}
它已經完成並且似乎可以正常工作,所以現在我擔心安全性:
如果太多客戶端同時連接(或者有人會對我的站點進行拒絕服務攻擊),那么服務器將無法正確處理所有請求,將會發生什么?
1)我希望服務器/應用程序不崩潰 。 有什么機制可以在過載的情況下發送請求? 它們是否默認啟用? 如果沒有,如何打開它們?
2)由於Web服務功能不返回值(如果可能的話,我希望保留其代碼,如果可能的話),客戶端只能通過HTTP錯誤代碼來區分已處理請求和未處理請求 。 因此,我希望解決方案在過載的情況下返回HTTP錯誤代碼。
我對Web服務和性能調優不是很熟悉(我更是一個理論程序員;算法和東西),所以我什至不知道要尋找什么。 在我看來,用Java解決這個問題似乎為時已晚-當消息到達我的代碼時,XML請求已被解析。 我希望服務器配置中的某些參數可以處理此問題; 但是我沒有成功通過Google找到它,也沒有閱讀WebLogic手冊。 也許我使用了錯誤的關鍵字,或者我對如何解決此問題有一個完全錯誤的想法……這就是為什么部分答案也可能非常有用的原因。
如果您想防御DOS攻擊,則可以獲取軟件/硬件來執行此操作。
如果要在代碼中進行操作,則可以編寫自己的javax.servlet.Filter。 您只需保留一個活動請求計數,然后使用HTTP 502或您需要的任何內容進行回復。
作為一般規則:不要編碼,請使用。 它非常適用於DoS攻擊的預防,Wikipedia擁有很好的“ 預防和響應檢查表”列表 :
防止DoS是安全專家必須解決的一個硬問題(而且您的言論並非如此)。
如果僅是為少數客戶端創建一個小型WebService,您甚至不必考慮防止DoS攻擊,因為您不太可能遇到這種攻擊。
如果出於對您有充分的理由對DoS預防是強制性的,那么請向安全專家詢問,因為您必須考慮以下類型的DoS攻擊:
現在,如果您只是希望合法用戶能夠知道該服務是否運行良好或失敗,請使用Web Server的經典行為:如果有太多合法用戶同時連接,則您的代碼將失敗異常。 然后,您的Servlet服務器將以503 HTTP錯誤代碼響應。 此代碼將告訴您的用戶出了點問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.