6

httpリクエストを処理できるtcpサーバーを構築するためのnetモジュールであるnode.jsを使用します。

dos攻撃を防ぎたいので、私がやったことは次のようなものです:

if (status.numOfCurrentRequests + 1 >= MAX_NUM_OF_CONNECTIONS) {
    socket.end();
    return; 
}

使用する方が良いかどうか疑問に思っていました:

socket.destroy();

API から:

socket.destroy() # このソケットでこれ以上 I/O アクティビティが発生しないようにします。エラー (解析エラーなど) が発生した場合にのみ必要です。

違いと利点は何ですか?

4

3 に答える 3

34

DOS 攻撃は、HTTP サーバーで処理するべきではありません。要求が到達すると、攻撃者は (どんなに短くても) 接続を確立することで「勝利」したことになります。それらが短くても、数千/秒でそれを叩きつけて、他の誰かが接続するのを防ぐことができます. また、TCP 経由で「接続」しようとせず、あらゆる種類のリクエストでサーバーをあふれさせるだけかもしれません。

下位レベルまたはファイアウォールを介した DOS 攻撃をブロック/検出します。これは、多くのソフトウェアおよびハードウェア バージョンが、いくつかの基本的なタイプの DOS 検出および防止をサポートしていると確信しています。

于 2011-12-22T22:47:06.267 に答える
3

誰にでも役立つ場合は、API からスマートに使用する必要があります。

 server.pause(msecs)

指定されたミリ秒数の間、接続の受け入れを停止します (デフォルトは 1 秒です)。これは、DoS 攻撃やその他のオーバーサブスクリプションに対して新しい接続を調整するのに役立ちます。

于 2011-12-26T23:01:10.413 に答える