我读了this article并且不能放手,因为我无法理解问题究竟是什么。它让我的大脑痒痒。
我能理解的是:
ws模块具有ping功能。
因为内部ws ping将我们发送的所有数据转换为Buffer实例,所以如果Buffer有一个数字而不是一个字符串,则可以分配大量的字节。
所以ws使用new Buffer(100);
来分配比new Buffer('100');
更多的字节,这很糟糕,因为我们分配(=使用,绑定,绑定)更多字节,使得服务器在我们能够让他工作时更加努力少工作。
那就是它。关于"返回非归零缓冲区的部分"和记忆泄露对我来说都是火箭科学。
服务器和缓冲区不是我的强项,所以我可以使用一个关于发生了什么的简单解释。
答案 0 :(得分:2)
该文章公开了一个漏洞,客户端可能会收到包含来自服务器某些随机内存的字节的pong响应。在某些情况下,此内存可能包含来自服务器的私有/秘密内容,因此被视为不安全的做法。这不是关于使服务器更加努力,而是关于存储在服务器内存中的东西的安全性。
由于nodejs分配缓冲区的方式,本文描述了可能在pong请求中意外发送到客户端的未初始化内存将是以前用于缓冲区分配的内存,而不是来自服务器的任何随机内存。
"泄漏"它指的是从服务器到外部世界的意外信息泄漏,而不是服务器上的内存泄漏。
问题似乎已在ws模块的1.0.1版中得到修复。