Buffer.allocUnsafe() 和 Buffer.allocUnsafeSlow() 为什么被称为“不安全”的?
🌐 What makes Buffer.allocUnsafe() and Buffer.allocUnsafeSlow() "unsafe"?
在调用 Buffer.allocUnsafe() 和 Buffer.allocUnsafeSlow() 时,分配的内存段是 未初始化 的(未被清零)。虽然这种设计使内存分配非常快速,但已分配的内存段可能包含潜在敏感的旧数据。如果使用 Buffer.allocUnsafe() 创建 Buffer 时未 完全 覆盖内存,当读取 Buffer 内存时,这些旧数据可能会被泄漏。
🌐 When calling Buffer.allocUnsafe() and Buffer.allocUnsafeSlow(), the
segment of allocated memory is uninitialized (it is not zeroed-out). While
this design makes the allocation of memory quite fast, the allocated segment of
memory might contain old data that is potentially sensitive. Using a Buffer
created by Buffer.allocUnsafe() without completely overwriting the
memory can allow this old data to be leaked when the Buffer memory is read.
虽然使用 Buffer.allocUnsafe() 确实有明显的性能优势,但必须格外小心,以避免在应用中引入安全漏洞。
🌐 While there are clear performance advantages to using
Buffer.allocUnsafe(), extra care must be taken in order to avoid
introducing security vulnerabilities into an application.