簡體   English   中英

如何使Web Service報告過載?

[英]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擁有很好的“ 預防和響應檢查表”列表

  • 防火牆配置
  • 開關配置
  • 路由器配置
  • 應用前端硬件
  • 基於IPS的預防
  • 基於DDS的防御系統
  • 黑洞和沉坑
  • 清潔管道

防止DoS是安全專家必須解決的一個硬問題(而且您的言論並非如此)。

如果僅是為少數客戶端創建一個小型WebService,您甚至不必考慮防止DoS攻擊,因為您不太可能遇到這種攻擊。

如果出於對您有充分的理由對DoS預防是強制性的,那么請向安全專家詢問,因為您必須考慮以下類型的DoS攻擊:

  • ICMP洪水
  • SYN洪水
  • 淚珠攻擊
  • 低速率拒絕服務攻擊
  • 對等攻擊
  • 飢餓攻擊中資源利用的不對稱性
  • 永久性拒絕服務攻擊
  • 應用程序級洪水
  • 努克
  • RU-Dead-Yet?
  • 分布式攻擊
  • 反映/欺騙攻擊
  • 意外拒絕服務
  • 拒絕服務級別II

現在,如果您只是希望合法用戶能夠知道該服務是否運行良好或失敗,請使用Web Server的經典行為:如果有太多合法用戶同時連接,則您的代碼將失敗異常。 然后,您的Servlet服務器將以503 HTTP錯誤代碼響應。 此代碼將告訴您的用戶出了點問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM