HyperSQL / HSQLDB 数据库能抵抗密码攻击吗?

Posted

技术标签:

【中文标题】HyperSQL / HSQLDB 数据库能抵抗密码攻击吗?【英文标题】:Is HyperSQL / HSQLDB database resistant to password attacks? 【发布时间】:2015-09-25 11:23:21 【问题描述】:

HyperSQL / HSQLDB 能抵抗密码攻击吗?本场景使用数据库:

DriverManager.getConnection("jdbc:hsqldb:hsql://localhost/somedb", "SA", "some_password");

比方说,如果某个黑客试图在一秒钟内使用无效密码连接 1000 次,会发生什么? HyperSQL 会阻止该用户吗? HyperSQL 数据库是否有一些针对密码攻击的安全方法——例如某些失败后的登录延迟?

【问题讨论】:

【参考方案1】:

您为什么不直接在本地尝试一下?我似乎无法找到它是否对登录尝试次数有限制,但您可以尝试使用数据库的本地实例并执行以下操作:

for (int i = 1; i <= 1000; i++) 
    System.out.println("Trying to log in, try number " + i);
    DriverManager.getConnection("jdbc:hsqldb:hsql://localhost/fsdb", "SA", "some_password");
    try 
        Thread.sleep(100);
     catch(InterruptedException ex) 
        System.out.println("Sleep was interrupted.");
        Thread.currentThread().interrupt();
    

编辑:您的数据库服务器可能不应该对来自所有外部 IP 的连接开放。

因此,如果没有理由允许所有外部 IP 连接到数据库服务器,您应该在 this guide 的帮助下创建一个白名单。

【讨论】:

是的,现在我尝试了类似的代码 - 在使用错误密码登录 100 次后 - 我可以继续 - 没有登录延迟或阻塞。所以这意味着破解HyperSQL数据库密码非常容易。也许有一些设置/属性文件可以限制登录失败等? Ernestas Gruodis:我添加了一些关于更好地保护 HSQLDB 服务器的信息。 好的,但是让我们想象一下——在计算机上安装了一些黑客的应用程序(通过打开邮件附件或其他方式),它开始破解数据库密码。然后,密码被破解后,发送网络上的数据。如果能够阻止无效的登录尝试,那就太好了。 您还可以将SA 用户名更改为随机生成的字符串,这样暴力攻击需要永远(数万亿次尝试)才能成功。

以上是关于HyperSQL / HSQLDB 数据库能抵抗密码攻击吗?的主要内容,如果未能解决你的问题,请参考以下文章

无法以新用户身份连接到 HyperSQL / HSQLDB 数据库

如何在 Hypersql 数据库(HSQLDB)中选择多列但仅按一列分组?

HyperSQL (HSQLDB) 显式共享(读取)锁语法

HSQLDB (HyperSQL) - 如何以毫秒精度将 UNIX 时间戳作为数字获取

HyperSQL 链接参数中文件的路径

什么是 HSQLDB(Hyper SQL)以及它与其他数据库有何不同?