1

入力パラメータを取得してデータベースに保存する関数を実装するWebサービスを作成しています。(コードはJavaであり、NetBeans IDEを使用して記述され、WebLogicサーバーにデプロイされています。)次のようなものです。

@WebService
class DataSaver {
    void saveData( ...data... ) {
        ...
    }
}

それはすでに完了していて、正しく機能しているように見えるので、今私は安全性について心配しています:

同時に接続するクライアントが多すぎる場合(または誰かが私のサイトに対してサービス拒否攻撃を行う場合)、サーバーがすべての要求を正しく処理できない場合はどうなりますか?

1)サーバー/アプリケーションがクラッシュしないようにしたいと思います。過負荷の場合にリクエストを送信するためのメカニズムは何ですか?それらはデフォルトで有効になっていますか?そうでない場合、どうすればそれらをオンにできますか?

2)Webサービス関数は値を返さないため(可能であれば、コードをそのままにしておくことをお勧めします)、クライアントはHTTPエラーコードによってのみ処理済みリクエストと未処理リクエストの違いを判断できます。したがって、過負荷の場合にHTTPエラーコードを返すソリューションをお勧めします。

私はWebサービスとパフォーマンスチューニングにあまり精通していないので(私は理論的なプログラマーであり、アルゴリズムなどです)、何を探すべきかさえわかりません。Javaでこの問題を解決するのは遅すぎるように思えます。メッセージが私のコードに到達したとき、XML要求はすでに解析されています。サーバー構成のいくつかのパラメーターがこれを処理することを期待します。しかし、Googleで見つけたり、WebLogicのマニュアルを読んだりすることはできませんでした。おそらく私は間違ったキーワードを使用しているか、この問題にどのように取り組むかについて完全に間違った考えを持っています...それが部分的な答えも非常に役立つ可能性がある理由です。

4

2 に答える 2

0

原則として、コーディングせずに使用してください。これは DoS 攻撃の防止に適しています。ウィキペディアには、防止と対応のチェックリストの優れたリストがあります。

  • ファイアウォールの構成
  • スイッチ構成
  • ルーター構成
  • アプリケーション フロント エンド ハードウェア
  • IPS ベースの防止
  • DDS ベースの防衛システム
  • ブラックホールとシンクホール
  • きれいなパイプ

DoS 防止は、セキュリティの専門家が取り組まなければならない難しいトピックです (そして、あなたはあなたの言うことからではありません)。

少数のクライアント用の小さな WebService を 1 人で作成している場合、DoS 攻撃に遭遇する可能性は低いため、DoS 攻撃を防ぐことを考える必要さえありません。

DoS 防止が正当な理由で必須である場合は、次の種類の DoS 攻撃を考慮する必要があるため、セキュリティの専門家に相談してください。

  • ICMP フラッド
  • SYNフラッド
  • ティアドロップアタック
  • 低レートのサービス拒否攻撃
  • ピアツーピア攻撃
  • 飢餓攻撃における資源利用の非対称性
  • 永続的なサービス拒否攻撃
  • アプリケーションレベルのフラッド
  • 核兵器
  • RU-Dead-Yet?
  • 分散攻撃
  • 反射/なりすまし攻撃
  • 意図しないサービス拒否
  • サービス拒否レベル II

サービスが正常に実行されたか失敗したかを正当なユーザーに知らせたい場合は、Web サーバーの従来の動作を使用してください。同時に接続する正当なユーザーが多すぎると、コードは次のように失敗します。例外。サーブレット サーバーは503 HTTP エラー コードで応答します。このコードは、何か問題が発生したことをユーザーに通知します。

于 2012-08-16T15:54:47.270 に答える
0

DOS 攻撃を防御したい場合は、それを行うためのソフトウェア/ハードウェアを入手できます。

コードで実行したい場合は、独自の javax.servlet.Filter. アクティブなリクエストの数を単純に数えて、HTTP 502 または必要なもので応答することができます。

于 2012-08-16T15:48:28.227 に答える