2012-09-10 24 views

答えて

16

私はこのアプローチどのように防弾でわからないんだけど、ここではウェブの周りの答えから収集し、次のとおりです。

var http = require('http'); 
http.createServer(function (req, res) 
{ 
    var ip = req.ip || req.connection.remoteAddress || req.socket.remoteAddress || req.connection.socket.remoteAddress; 
    if (ip == '127.0.0.1') // exit if it's a particular ip 
     res.end(); 
... 

してください、ノードでより堪能誰か - 私を修正

16

あなたの場合サーバー全体のへのアクセスを制限していますネットワークアドレス、これらのルールをファイアウォールに入れることをお勧めします。なんらかの理由(簡単な設定、動的な認証など)でアプリケーション層で処理する場合は、HTTP要求を待つのではなく、接続直後にこれを行うのが最善です。

Node.js 'http.Server emits a connection eventリモートアドレスを特定し、実際のHTTPリクエストの前(またはその間)に接続を強制終了するために使用できます。このコードはテストされていませんが、開始する必要があります。

var server = http.createServer(function (req, res) { 
    // Your normal request handling goes here 
}); 

server.on('connection', function (sock) { 
    console.log(sock.remoteAddress); 
    // Put your logic for what to do next based on that remote address here 
}); 

server.listen(80); 
+1

非常に良い点。私は現在、nodejsからipのログを記録し、定期的にiptablesを更新するシェルスクリプトを持つシステムを使用しています。あなたが「アプリケーションレイヤに当たる前に、それらのルールをファイアウォールに置く」と言ったときは間違いありません。 –

関連する問題