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