node.js - 如何测试输入是否不是/dev/random?

标签 node.js

我正在使用一个简单的聊天服务器,并且正在尝试保护它的安全。我让 Node.js 监听一个端口,接受来自所有客户端的所有输入并将其返回给所有客户端。我可以通过这样做来淹没服务器

cat /dev/random | chat

其中聊天是客户端应用程序。它淹没了服务器和每个客户端。我知道我可以测试输入是否长于某个给定的数量,例如 500 个字符,但它正在淹没服务器(检查需要在服务器上进行,而不是在客户端上进行,因为我也可以远程登录)。

我想我需要检查以确保输入中没有控制字符,但仍然允许所有随机 UNICODE。我该怎么做?哪些角色可能是坏的?

编辑:我添加了一些速率限制,这样它们就不能淹没服务器。我添加逻辑来测试平均发布时间是否低于某个阈值,如果是则关闭其连接。但我不知道如何做到这一点:)

最佳答案

/dev/random 或控制字符不是问题——有人仍然可以使用随机的纯文本流向您的服务器发送垃圾邮件。更好的方法是对您的客户端进行速率限制,以便您在某个时间间隔内仅接受一定数量的数据。例如,如果客户端在一秒内发送超过 500 个字节,您可以将该客户端静音 5 秒。

关于node.js - 如何测试输入是否不是/dev/random?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6049683/

相关文章:

r - shelljs 执行在 DigitalOcean 上卡住

Node.js:zlib.gzipSync()

Node.js 直播 : Avoid buffering

angularjs - 将 Mongoose 模型表示为 Typescript 类

node.js - 使用 Docker 容器的 MEAN 堆栈

node.js - TCP套接字客户端通过nodejs上的代理

node.js - Node JS Express 样板和渲染

unit-testing - nodeunit 中是否有等同于 assertFalse 的东西?

javascript - Node 服务器发送后无法设置 header

javascript - 下划线模板中的 "unexpected token <"