【问题标题】:howto encrypt passwords in configuration files, grails [and java]如何在配置文件、grails [和 java] 中加密密码
【发布时间】:2010-07-26 15:36:17
【问题描述】:

我正在寻找如何在 grails 中逐步保护放入配置文件中的密码。这意味着保护 Config.groovy 和 DataSource.groovy 中的密码。有很多谷歌结果包含答案的零碎部分,但没有关于如何做到这一点的简明指南。有人可以指出我正确的方向吗?谢谢

【问题讨论】:

  • 为什么需要这样做?这些文件不可公开访问
  • 我不写要求。它只是必要的。我实际上认为这是可能的,并且有点标准做法——我之前在非 grails j2ee 应用程序中看到配置 xml 文件中的加密字符串。我只是想找到实现这一目标的指南。

标签: configuration encryption grails


【解决方案1】:

对于 Config.groovy,您始终可以通过某种方式加密密码,然后手动将该哈希放入 Config.groovy。当您需要在代码中使用它时,请使用一些代码为您解密它。好像没那么难。

但是,DataSource.groovy 是另一种动物,因为它是为您提供给 Hibernate API 的。我确实在互联网上看到了一些这样的代码,它似乎朝着正确的方向前进......

dataSource { 
   pooled = false 
   driverClassName = "org.hsqldb.jdbcDriver" 
   username = "sa" 
   password =  someEncryptionApiObject.decrypt(propertyFile.readProperty("MyPassword")) 
} 

...您将在其中加密包含所需数据的属性文件,并在需要时解密。

【讨论】:

  • 是的,这个解决方案似乎与这个jira.codehaus.org/browse/GRAILS-3620 非常相似,似乎休眠数据源中有机器可以在给定编解码器的情况下进行解密。我想知道其他密码;我们还使用需要自己密码的邮件插件。我认为您的建议只是内联解密,因为 .groovy 文件是代码,这很好。我今天晚些时候/明天试试。
  • 与将密码作为纯文本存储在文件系统上但访问受限相比,这里有哪些优势?似乎您需要在文件系统上存储一些东西,无论是私钥还是密码本身。最终你不会在两种方法中都有相同的漏洞吗?也许文件系统上的加密密码通过默默无闻为您购买了一些额外的安全性?
  • DataSource.groovy 的副本可能在开发人员的笔记本电脑和存储库服务器(例如 github)上可用。所有这些都可能被黑客入侵或被盗。生产服务器上的单个文件比开发人员的笔记本电脑和存储库服务器更容易受到保护。但事实上,生产服务器上的那个单一文件仍然是最薄弱的环节。
【解决方案2】:

问题是:您想针对什么保护您的配置文件?一种可能是使用文件系统加密。另一种方法是使用强密码加密文件并在应用程序启动时询问密码。但是考虑到如果不重新输入密码就无法重新启动应用程序!

查看Apache httpd documentation,了解 Apache 如何处理同样的问题。

【讨论】:

    【解决方案3】:

    Config.groovyDataSource.groovy 不是配置文件,而是配置类。编译后的结果直接不可读。

    更新

    在您的配置类上使用混淆工具。 这里是a list

    【讨论】:

    • 字节码以这种方式不安全。字符串通常可以直接在字节码文件中读取。
    • deamon 所说的,以及有权访问您的 Config/DataSource.groovy 文件的任何人都可以访问您的凭据。
    猜你喜欢
    • 2023-04-01
    • 2013-12-07
    • 1970-01-01
    • 2010-11-11
    • 2021-11-13
    • 1970-01-01
    • 1970-01-01
    • 2011-08-29
    • 2011-01-10
    相关资源
    最近更新 更多