如何在 H2 数据库中创建安全字段?

Posted

技术标签:

【中文标题】如何在 H2 数据库中创建安全字段?【英文标题】:How to create a secured field in H2 database? 【发布时间】:2013-02-08 10:15:16 【问题描述】:

我期待如何以加密形式将我的密码存储在数据库中。 我找到了这本手册,但仍然不确定如何将它放入我的 ddl。 下面的代码不起作用。

create table USER_USER (
USER_USER_ID long NOT NULL AUTO INCREMENT, 
USER_USER_LOGIN varchar(50),
USER_USER_PASSWORD varchar (50) cipher lzf, 
USER_USER_EMAIL varchar(50)
);

【问题讨论】:

【参考方案1】:

首先,lzf 不是cipher 的有效参数; H2只支持aesxtea(documentation)

也就是说,不要让数据库为您加密密码。该数据库通常不会与您的 Java 应用程序在同一台服务器上运行,这意味着密码将以纯文本形式通过网络传输。

即使您的数据库位于同一台服务器上,甚至是嵌入的,密码也需要非常多的特殊处理,因此您最好将它们存储为二进制 blob 并使用像 jBCrypt 这样的框架。主要原因是攻击者开发了复杂的自动化工具来自动破解密码。编写一个能够抵御大多数常见攻击的算法并不容易。

【讨论】:

以上是关于如何在 H2 数据库中创建安全字段?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 IntelliJ 和 H2 中创建 Hibernate 映射

如何在spring boot中创建H2+flyway测试数据库?

尝试在 H2 数据库中创建表时出现 Liquibase 错误

在 h2 中创建枢轴

为啥我不能在我的 H2 数据库中创建表?

您可以在 H2 中创建多个目录吗?