2012-09-10 49 views

Trả lời

16

Tôi không chắc chắn như thế nào chống đạn là phương pháp này, nhưng ở đây nó được, thu thập được từ câu trả lời trên 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(); 
... 

Xin vui lòng, có người thành thạo hơn trong nút - chính xác cho tôi

16

Nếu bạn đang hạn chế quyền truy cập vào toàn bộ máy chủ toàn bộ máy chủ bởi địa chỉ mạng, tốt nhất là nên đặt những quy tắc đó trong tường lửa của bạn. Nếu bạn muốn xử lý nó ở tầng ứng dụng vì lý do nào đó (dễ cấu hình, ủy quyền động, v.v.) thì tốt nhất là làm điều này ngay lập tức khi kết nối thay vì chờ đợi một yêu cầu HTTP.

Node.js 'http.Server emits a connection event mà bạn có thể sử dụng để xác định địa chỉ từ xa và hủy kết nối trước (hoặc trong) yêu cầu HTTP thực tế. Mã này chưa được kiểm tra nhưng sẽ giúp bạn bắt đầu:

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

Điểm rất tốt. Tôi hiện đang sử dụng một hệ thống mà tôi đăng nhập của ip từ nodejs và có một kịch bản shell chạy định kỳ để cập nhật iptables tương ứng. Bạn chắc chắn chính xác khi bạn nói 'đặt những quy tắc trong tường lửa của bạn, trước khi nó chạm vào lớp ứng dụng'. –

Các vấn đề liên quan