diff --git a/buffer/buffer_from_buffer_alloc_and_buffer_allocunsafe.md b/buffer/buffer_from_buffer_alloc_and_buffer_allocunsafe.md index a475a2de..d1134fa9 100644 --- a/buffer/buffer_from_buffer_alloc_and_buffer_allocunsafe.md +++ b/buffer/buffer_from_buffer_alloc_and_buffer_allocunsafe.md @@ -12,8 +12,8 @@ 由于 `new Buffer()` 的行为因第一个参数的类型而异,因此当未执行参数验证或 `Buffer` 初始化时,可能会无意中将安全性和可靠性问题引入应用程序。 例如,如果攻击者可以使应用程序接收到数字(实际期望的是字符串),则应用程序可能调用 `new Buffer(100)` 而不是 `new Buffer("100")`,它将分配一个 100 个字节的 buffer 而不是分配一个内容为 `“100”` 的 3 个字节的 buffer。 -这通常可以使用 JSON API 调用。 -由于 JSON 区分数字和字符串类型,因此它允许在天真的应用程序可能期望始终接收字符串的情况下注入数字。 +使用 JSON API 调用时,是非常有可能发生这种情况的。 +由于 JSON 区分数字和字符串类型,因此它允许在简单的应用程序可能期望始终接收字符串的情况下注入数字。 在 Node.js 8.0.0 之前,100 个字节的 buffer 可能包含任意预先存在的内存数据,因此可能会用于向远程攻击者暴露内存中的机密。 从 Node.js 8.0.0 开始,由于数据会用零填充,因此不会发生内存暴露。 但是,其他攻击仍然存在,例如导致服务器分配非常大的 buffer,导致性能下降或内存耗尽崩溃。