H2 数据库 - 仅供测试,禁止生产环境使用
⚠️ 严重安全警告:H2 数据库不适合生产环境。它仅供本地测试和开发使用。在生产环境中使用 H2 会使您的服务器面临严重的安全漏洞。在使用 H2 之前,请仔细阅读本页面。
🔴 安全风险 - 使用前必读
什么是 H2 数据库?
H2 是一个开源的 Java SQL 数据库。HertzBeat 内置 H2 作为默认嵌入式数据库,以便在无需单独安装数据库的情况下快速进行测试和评估。
为什么 H2 在生产环境中危险
H2 拥有一个叫做 CREATE ALIAS 的内置功能,允许在数据库查询中执行任意 Java 代码。这意味着:
-- 极其危险的 H2 功能示例:
CREATE ALIAS EXEC AS $$
String exec(String cmd) throws Exception {
Runtime.getRuntime().exec(cmd);
return null;
}
$$;
-- 可以在服务器上执行 Shell 命令:
CALL EXEC('rm -rf /重要数据');
如果您的 H2 数据库被恶意用户访问,他们可以:
- 在 HertzBeat 服务器上执行任意 Shell 命令
- 读取 HertzBeat 进程可访问的任何文件
- 完全控制运行 HertzBeat 的服务器
- 访问所有监控数据,包括敏感凭据
📖 详细信息请参阅官方 H2 安全文档。