У меня есть сервер node.js с socket.io. Мои клиенты используют socket.io для подключения к серверу node.js.
Данные передаются от клиентов к серверу следующим образом:
На клиенте
var Data = {'data1':'somedata1', 'data2':'somedata2'};
socket.emit('SendToServer', Data);
На сервере
socket.on('SendToServer', function(Data) {
for (var key in Data) {
// Do some work with Data[key]
}
});
Предположим, что кто-то изменяет свой клиент и испускает на сервер действительно большой кусок данных. Например:
var Data = {'data1':'somedata1', 'data2':'somedata2', ...and so on until he reach for example 'data100000':'data100000'};
socket.emit('SendToServer', Data);
Из-за этого цикла на сервере...
for (var key in Data) {
// Do some work with Data[key]
}
... серверу потребуется очень много времени, чтобы просмотреть все эти данные.
Итак, что является лучшим решением для предотвращения таких сценариев?
Спасибо
EDIT:
Я использовал эту функцию для проверки объекта:
function ValidateObject(obj) {
var i = 0;
for(var key in obj) {
i++;
if (i > 10) { // object is too big
return false;
}
}
return false;
}