Encryption Wildfly:加密数据库的密码和用户名

Encryption Wildfly:加密数据库的密码和用户名,encryption,wildfly,Encryption,Wildfly,我想把一个webapplication交给一些人,但是不应该允许这些人使用一些工具访问数据库。使用webapplicaton,在后台数据库正常 Wildfly有一个包含以下代码的配置: <xa-datasource jndi-name="java:jboss/datasources/ExampleXADS" pool-name="ExampleXADS"> <driver>h2</driver> <xa-datasource-

我想把一个webapplication交给一些人,但是不应该允许这些人使用一些工具访问数据库。使用webapplicaton,在后台数据库正常

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>

氢
jdbc:h2:mem:test
10
20
真的
sa
sa
如您所见,还有可用的用户名和密码。如何排除/加密这些,以便只有管理员知道数据库的密码。 整个应用程序服务器也是如此——还有用户和密码。 我该怎么做

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

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

如果要限制访问,请将服务器置于您的控制之下,并让他们仅通过web前端访问它


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

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

如果要限制访问,请将服务器置于您的控制之下,并让他们仅通过web前端访问它


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

您可以使用安全域来解决此问题,Wildfly可能会有一些特定的更改,但对于JBoss 7.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

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

  • 检查picketbox jar是否具有org.picketbox.datasource.security.SecureIdentityLoginModule类

  • 从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

  • 获取输出文本,并在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>
    
    
    

    您可以使用安全域来解决这个问题,Wildfly可能会有一些特定的更改,但对于JBoss 7.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

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

  • 检查picketbox jar是否具有org.picketbox.datasource.security.SecureIdentityLoginModule类

  • 从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

  • 获取输出文本,并在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>
    
    
    

    a没有意义-它是用固定密码加密的,你可以得到一个解密程序。有一个,它被标记为
    不会修复
    ,因为“The”会加密数据库“密码是用来通过愚蠢的安全审核的。最终,某个地方会有某种密码,因为系统需要解密密码才能将其发送到数据库。对于一个相对有经验的程序员来说,破解这个问题总是很容易的。“没有任何意义——它是用一个固定的密码加密的,你可以得到一个解密程序。有一个,它被标记为
    不会修复的,因为“加密数据库”密码是用来通过愚蠢的安全审计的。最终,某个地方会有某种密码,因为系统需要解密密码才能将其发送到数据库。对于一个相对有经验的程序员来说,破解这个问题总是很容易的。”