小编spa*_*n12的帖子

nodejs服务器抵御DOS攻击

我正在使用nodejs编写一个高度可扩展的基于浏览器的Web聊天服务器.涉及的概念很简单 - 首先它检查浏览器是否支持websocket.如果没有支持或以其他方式与服务器规范不兼容,它只是优雅地降级到传统的长轮询.

利用其高度优化的I/O模型,我找不到任何其他框架到目前为止这样的工作非常好和适合nodejs.但是,我有一个与DOS攻击有关的问题,我决定提出一个简单的解决方案.但是,我不太确定它是否是抵御那些大规模洪水攻击的最理想方式.

我计划做的是 - 如果源自单个IP地址的50个或更多请求在特定时间长度内(例如1秒)命中服务器,则拒绝来自该IP的所有进一步请求,直到该特定时间间隔到达失效等.

这会好吗?

javascript denial-of-service node.js

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

与socket.io相关的可伸缩性问题

在socket.io的主页上,它没有说明与可伸缩性问题相关的任何内容.有没有人知道它一次可以处理多少个并发连接?我想在我的项目中部署socket.io以进行大规模的彗星处理.例如,它声明nodejs可以轻松处理多达100K的并发连接.socket.io能否同时处理那些请求?

javascript node.js socket.io

3
推荐指数
1
解决办法
4903
查看次数

解码 websocket 中的延续帧

如何解码 websocket 中的连续帧?有人可以给我对此有用的见解吗?将连续帧解码为文本帧会导致错误。

我正在向服务器发送一个大文本字符串,我可以设法仅解码第一个传入的文本帧,然后失败。

这是 Nodejs 中处理文本帧解码的简单函数 -

function decodeWS(data)
{
    var dl = data[1] & 127;
    var ifm = 2;
    if (dl == 126) 
    {
        ifm = 4;
    } else if (dl == 127) 
    {
        ifm = 10;
    }
    var i = ifm + 4;
    var masks = data.slice(ifm,i);
    var index = 0;
    var output = "";
    var l=data.length;
    while (i < l) 
    {
        output += String.fromCharCode(data[i++] ^ masks[index++ % 4]);
    }
    return output;
}
Run Code Online (Sandbox Code Playgroud)

javascript websocket node.js

2
推荐指数
1
解决办法
2741
查看次数