如何testinginput是不是/ dev / random?

我有一个简单的聊天服务器,我正在玩,我试图保护它。 我有一个Node.js监听一个端口,接受来自所有客户端的所有input,并返回给所有的客户端。 我可以通过做洪泛的服务器

cat /dev/random | chat 

哪里聊天是客户端应用程序。 它淹没服务器和每个客户端。 我知道我可以testing一下,看看input是否比一些给定的数量更长,比如500个字符,但是它是服务器泛滥(检查需要在服务器上,而不是客户端,因为我只能telnet)。

我想我需要检查,以确保input中没有控制字符,但仍然允许所有的随机UNICODE。 我将如何做到这一点? 什么都可能是坏的字符?

编辑:我添加一些速率限制,所以他们不能只是泛滥的服务器。 我添加逻辑来testing平均发布时间是否低于某个阈值,如果是,则closures它们的连接。 但我没有问题如何做到这一点:)

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

我想你可能会更好地写一个脚本来做到这一点。

  1. 你可以定制它来输出某些字符或过滤某些字符
  2. 你可以重播不好的序列来testing你的修复
  3. 你可以调节它
  4. 你可以操纵真正的UNICODE,而不是仅仅依靠你得到的随机输出(我明白,随机字节序列testing可能是好的,但可能是你真正想做的一个子集)

你可以select让你的脚本在封面下使用/dev/random ,但这是一个可扩展的脚本编写选项。