2012-09-10 12 views

Respuesta

16

no estoy seguro de cómo es este enfoque a prueba de balas, pero aquí está, recogidos de respuestas en la web:

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(); 
... 

Por favor, alguien más competente en el nodo - corríjame

16

Si están restringiendo el acceso al servidor completo por dirección de red, es mejor poner esas reglas en su firewall. Si desea manejarlo en la capa de aplicación por alguna razón (facilidad de configuración, autorización dinámica, etc.), entonces es mejor hacerlo inmediatamente después de la conexión en lugar de esperar una solicitud HTTP.

Node.js 'http.Server emits a connection event que puede usar para determinar la dirección remota y cancelar la conexión antes (o durante) la solicitud HTTP real. Este código no ha sido probado pero debe comenzar:

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

Muy buen punto. Actualmente utilizo un sistema donde registro las direcciones IP de nodejs y tengo un script de shell que se ejecuta periódicamente para actualizar iptables respectivamente. Definitivamente tienes razón cuando dijiste 'poner esas reglas en tu firewall, antes de que llegue a la capa de aplicación'. –

Cuestiones relacionadas