【问题标题】:Wildfly: Encrypt password and username for databaseWildfly:加密数据库的密码和用户名
【发布时间】:2016-02-05 21:46:45
【问题描述】:

我想将一个 web 应用程序交给一些人,但不应允许这些人使用某些工具访问数据库。使用webapplicon和后台数据库是ok的。

Wildfly 有一个包含这些代码的配置:

<xa-datasource jndi-name="java:jboss/datasources/ExampleXADS" pool-name="ExampleXADS">
       <driver>h2</driver>
       <xa-datasource-property name="URL">jdbc:h2:mem:test</xa-datasource-property>
       <xa-pool>
            <min-pool-size>10</min-pool-size>
            <max-pool-size>20</max-pool-size>
            <prefill>true</prefill>
       </xa-pool>
       <security>
            <user-name>sa</user-name>
            <password>sa</password>
       </security>
    </xa-datasource>

如您所见,还有可用的用户名和密码。怎么可能排除/加密这些,所以只有管理员知道数据库的密码。 整个应用服务器也是如此——还有用户和密码。 我该怎么做?

编辑: “客户”将获得包括网络服务器配置在内的整个应用程序。 (Wifly 和 .war - 文件) 它仅用于将软件密钥保存在数据库中。 如果“客户”第一次启动 Web 应用程序,系统会提示他输入许可证密钥。 输入许可证密钥后,将调用 Web 服务。返回码为“false”或“true”(密钥有效还是密钥无效) 我的第一个想法是将标志存储在数据库中。但是如果用户可以访问数据库,他可以自己操作这个标志。 是否有任何其他可能为“软件密钥有效”设置标志而不是将标志保存在数据库中。 有什么想法吗?

【问题讨论】:

    标签: encryption wildfly


    【解决方案1】:

    这是不可能的。如果 Web 应用程序必须能够解密密码才能使用数据库,那么服务器上的任何人都可以这样做。

    如果您想限制访问,请将服务器置于您的控制之下,并让他们只能通过 Web 前端访问它。

    (即使可以进行有用的加密,如果他们具有服务器访问权限,他们也可以轻松地将数据库文件复制到他们的工作站,或将新用户帐户添加到数据库服务器)。

    【讨论】:

      【解决方案2】:

      您可以使用安全域来解决这个问题,Wildfly 可能会有一些特定的更改,但对于 JBoss 7.1.1,这是您需要做的。

      1. 在您的 JBoss/Widlfy 服务器中找到 jboss-logging-3.1.0.GA.jar 的位置。对于 JBoss 7.1.1,它应该类似于 - modules\org\jboss\logging\main\jboss-logging-3.1.0.GA.jar

      2. 找到 picketbox-4.0.7.Final.jar 的位置

      3. 检查 Picketbox jar 是否有 org.picketbox.datasource.security.SecureIdentityLoginModule 类。

      4. 从 JBoss 服务器根文件夹运行以下命令来加密您的数据源连接密码

        java -cp modules\org\jboss\logging\main\jboss-logging-3.1.0.GA.jar;modules\org\picketbox\main\picketbox-4.0.7.Final.jar org.picketbox.datasource .security.SecureIdentityLoginModule 密码XYZ

      5. 获取输出文本并在standalone.xml 中的元素下添加以下安全域:

                    <security-domain name="encrypted-ds-WASM2" cache-type="default">
                        <authentication>
                            <login-module code="org.picketbox.datasource.security.SecureIdentityLoginModule" flag="required">
                                <module-option name="username" value="WASM2"/>
                                <module-option name="password" value="89471a19022f8af"/>
                                <module-option name="managedConnectionFactoryName" value="jboss.jca:service=LocalTxCM,name=MySqlDS_Pool"/>
                            </login-module>
                        </authentication>
                    </security-domain>
        
      6. 在数据源元素中使用此安全域,如下所示:

                    <datasource jta="false" jndi-name="java:jboss/jdbc/JNDIDS" pool-name="OFS1" enabled="true" use-ccm="false">
                        <connection-url>jdbc:oracle:thin:@x.x.x.x:1521:xxxx</connection-url>
                        <driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
                        <driver>oracle</driver>
                        <security>
                            <security-domain>encrypted-ds-WASM2</security-domain>
                        </security>
                        <validation>
                            <validate-on-match>false</validate-on-match>
                            <background-validation>false</background-validation>
                            <background-validation-millis>1</background-validation-millis>
                        </validation>
                        <statement>
                            <prepared-statement-cache-size>0</prepared-statement-cache-size>
                            <share-prepared-statements>false</share-prepared-statements>
                        </statement>
                    </datasource>
        

      参考链接:http://middlewaremagic.com/jboss/?p=1026

      【讨论】:

      • 没有意义——它是用固定密码加密的,你可以得到一个解密器from here。有一个open bug for JBOSS,它被标记为wont fix,因为““加密数据库”密码是为了通过愚蠢的安全审核。最终会有某种密码,因为系统需要解密密码将其发送到数据库。对于相对有经验的程序员来说,破解它总是很容易的。"
      猜你喜欢
      • 1970-01-01
      • 2012-05-08
      • 2018-02-13
      • 2017-05-18
      • 2016-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-25
      相关资源
      最近更新 更多