H2数据库:防止用户转储数据库内容(SCRIPT、BACKUP等)

Posted

技术标签:

【中文标题】H2数据库:防止用户转储数据库内容(SCRIPT、BACKUP等)【英文标题】:H2 database: prevent users from dumping database content (SCRIPT, BACKUP, etc) 【发布时间】:2011-05-27 06:23:19 【问题描述】:

我们在服务器模式下使用 Java + H2 数据库,因为我们不希望用户访问数据库文件。

所有由管理员创建的数据库用户都是普通用户(不是管理员)。那些普通用户还有其他可能获取数据库内容吗?我尝试了 SCRIPT 和 BACKUP 命令,但失败了,因为它们需要管理员权限。太好了:)

设置用户不是管理员是否足以保护用户免于转储数据库内容?

更多,使应用程序用户=数据库用户,一个好的安全实践吗?以前,对于身份验证,我们使用数据库中的自定义“用户”表,而不是数据库用户。

谢谢。

【问题讨论】:

由于这可能与 H2 database: how to protect with encryption, without exposing file encryption key 重复,请更新您的原始问题。 这不是重复的。这个问题是关于保护数据库内容不被普通用户转储,一旦用户登录到 H2 控制台。另外,我还询问了将数据库用户用作应用程序用户的编程实践。另一个问题(已链接)是关于隐藏加密密钥的。 【参考方案1】:

这些普通用户是否有其他可能获取数据库内容?

没有。这就是数据库用户和权限的重点,因此用户只能访问他被允许访问的数据。

设置用户不是管理员是否足以保护用户免于转储数据库内容?

是的。

使应用程序用户=数据库用户,一个好的安全实践吗?

是的,如果客户端应用程序可以访问数据库(通过 TCP/IP)。

以前,对于身份验证,我们使用数据库中的自定义“用户”表,而不是数据库用户。

这是 Web 应用程序和其他 3 层系统(用户无权访问数据库)的常见解决方案。

【讨论】:

是否可以阻止普通用户访问information_schema? 嗯,普通用户对 information_schema 应该没有或只有有限的访问权限...我看到他们目前拥有完全的读取权限。这不好,我会尝试解决这个问题。目前没有办法阻止用户访问这些表。

以上是关于H2数据库:防止用户转储数据库内容(SCRIPT、BACKUP等)的主要内容,如果未能解决你的问题,请参考以下文章

H2 SCRIPT 命令是不是像快照一样工作?

Grails 3.3 执行H2脚本命令

转储 H2 插入语句

用于备份 h2 数据库的 SQL“SCRIPT”命令

处理用户上传的图像时,防止“内容嗅探”类型的漏洞?

在 MODE=MySQL 中运行 h2 不支持 MySQL 转储