📜  Node.js Buffer.allocUnsafe() 方法(1)

📅  最后修改于: 2023-12-03 15:17:53.975000             🧑  作者: Mango

Node.js Buffer.allocUnsafe() 方法

简介

Buffer.allocUnsafe() 方法是 Node.js 中用于创建二进制数据缓冲区的方法之一。它会创建一个指定长度的 Buffer 对象,并未 Buffer 中的每个字节赋予一个未初始化的随机值。因此,allocUnsafe() 方法创建的 Buffer 对象并不安全,其值可能包含敏感数据,使用前需要谨慎清空。

语法
Buffer.allocUnsafe(size[, fill]);
  • size - 用于生成 Buffer 的长度
  • fill - 用于重写分配的 Buffer 的值,如果未提供,则分配的 Buffer 包含未初始化的随机值。
返回值

一个指定大小的新 Buffer 对象。

示例
const buf = Buffer.allocUnsafe(16);

console.log(buf);
// 输出:<Buffer bd 98 86 40 e8 8f c1 7f b5 dd 11 6a 8f 63 a6 18>

在本示例中,Buffer.allocUnsafe() 方法创建了一个大小为 16 字节的 Buffer 对象,由于生成的 Buffer 对象是未初始化的,Buffer.allocUnsafe() 方法会为分配的缓冲区分配内存,但不会重写缓冲区值,因此每个字节都是未知的随机值。

注意事项
  • Buffer.allocUnsafe() 方法可能会在数据泄漏攻击(如心脏出血(Heartbleed)漏洞)的漏洞利用中被利用,因为未初始化的内存可能容纳敏感数据或加密密钥。
  • 不要依赖 allocUnsafe() 方法的任何默认行为。
  • 必要时请使用 Buffer.fill() 的重载来扩展 Buffer 对象。
总结

Buffer.allocUnsafe() 方法是一种快速创建 Buffer 对象的方法,但是需要注意,由于其生成的 Buffer 对象是未初始化的,可能包含敏感数据或加密密钥,因此使用前需要对其谨慎清空。