小编use*_*196的帖子

Socket.io:如何限制从客户端到websocket服务器的发出数据的大小

我有一个带socket.io的node.js服务器.我的客户端使用socket.io连接到node.js服务器.

数据以下列方式从客户端传输到服务器:

在客户端

var Data = {'data1':'somedata1', 'data2':'somedata2'};
socket.emit('SendToServer', Data);
Run Code Online (Sandbox Code Playgroud)

在服务器上

socket.on('SendToServer', function(Data) {
    for (var key in Data) {
           // Do some work with Data[key]
    }
});
Run Code Online (Sandbox Code Playgroud)

假设某人修改了他的客户端并向服务器发送了大量数据.例如:

var Data = {'data1':'somedata1', 'data2':'somedata2', ...and so on until he reach for example 'data100000':'data100000'};
socket.emit('SendToServer', Data);
Run Code Online (Sandbox Code Playgroud)

因为服务器上的这个循环......

for (var key in Data) {
       // Do some work with Data[key]
}
Run Code Online (Sandbox Code Playgroud)

...服务器需要很长时间才能遍历所有这些数据.

那么,防止此类情况的最佳解决方案是什么?

谢谢

编辑:

我用这个函数来验证对象:

function ValidateObject(obj) {
    var i = 0;
    for(var key in obj) {
        i++;
        if (i > …
Run Code Online (Sandbox Code Playgroud)

javascript node.js socket.io

10
推荐指数
1
解决办法
5762
查看次数

socket.io:在握手对象中存储敏感数据是否安全?

我想在握手对象中保存一些用户敏感数据.服务器端代码看起来像这样:

io.configure(function (){
 io.set('authorization', function (handshakeData, callback) {

   var objAuthorized = IsUserAuthorized(handshakeData);

   if (objAuthorized.authorized) {
        handshakeData.password = objAuthorized.password; // Store sensitive data inside handshake
        handshakeData.email = objAuthorized.email; // Store sensitive data inside handshake
        callback(null, true);
     } else {
        callback(null, false);
     }

  });
});

io.sockets.on('connection', function (socket) {
  socket.on('do something', function() {
     if DoSomething(socket.handshake.password, socket.handshake.email) {
        // do something here
     }
  });
});
Run Code Online (Sandbox Code Playgroud)

上面的例子来自https://github.com/LearnBoost/socket.io/wiki/Authorizing.

在握手对象中保存敏感数据是否安全?客户端可以在套接字连接的生命周期内以某种方式修改此数据吗?

谢谢

node.js socket.io

6
推荐指数
1
解决办法
720
查看次数

标签 统计

node.js ×2

socket.io ×2

javascript ×1