Я изучал node.js и socket.io в последнее время. Мой вопрос: как защитить сервер от атак на стороне клиента?Как защитить от распространенных атак типа «отказ в обслуживании» в Node.js с помощью Socket.io?
Это мой код сервера
io.sockets.on('connection', function (socket) {
//users.push(socket);
socket.on('message', function (data) {
socket.on('disconnect', function() { });
socket.on('bcast', function (data) {
socket.emit('news', { 'data': data });
socket.broadcast.emit('news', { 'data': data });
});
socket.on('login', function(data){
socket.emit('login', {'data': [ socket.id, data ] });
});
});
});
Например, если клиент использует инструменты разработчика Chrome сделать протекающего код
for(var i = 0; i<99999999999; i++)
{
socket.emit('bcast', {data: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'});
}
его собираются убить сервер.
Если это действительно убивает ваш сервер, вы должны, вероятно, внедрить какой-то дросселирование на основе клиентов и т. Д. – adeneo
Узел 0.10.20 имеет проблемы с DoS, если вы используете его (или, ниже, я думаю). – gustavohenke
Почему вы не показываете конечную точку сокета узла с помощью службы защиты/дросселирования DoS? Я уверен, что cloudflare или аналогичный провайдер будет иметь очень хорошую защиту DoS, а не попытку опрокинуться. – amarprabhu