跳转到内容

安全

安全政策

在 npm 上发布的最新版本会获得安全更新支持。

npm view sharp dist-tags.latest

如需报告漏洞,请使用电子邮件。 如果你是报告真实问题的人类,我们会在 48 小时内回复。 提前感谢。

安全特性

所有输入都被视为不受信任;如果解码尝试期间出现任何警告,输入将被拒绝。

各种输入格式可在运行时使用 block 和 unblock 进行控制。 例如,只允许 JPEG 输入:

sharp.block({
operation: ['VipsForeignLoad']
});
sharp.unblock({
operation: ['VipsForeignLoadJpeg']
});

对于受信任的输入,可以使用以下构造函数选项来放宽各种与安全相关的检查。

预构建二进制文件中的 C、C++ 和 Rust 依赖项的最新版本会持续进行模糊测试。 潜在的安全问题会经过协调和修复,并在公开细节前发布修复信息。

安全注意事项

减少内存相关漏洞的影响

高严重性问题通常与堆缓冲区溢出有关,其影响可以通过地址空间布局随机化(ASLR)来缓解。

当 Node.js 二进制文件是位置无关可执行文件(PIE)时,Linux 支持此功能,几乎所有操作系统包管理器都已使用此方式。

但请注意,官方 Node.js 二进制文件 并未以这种方式进行安全加固,在处理不受信任的内容时应避免使用。

限制运行时资源

为了防止内存无限增长或 CPU 资源耗尽,请在控制组中运行 Node.js 进程,以限制资源消耗。