Encryption Wildfly:加密数据库的密码和用户名
我想把一个webapplication交给一些人,但是不应该允许这些人使用一些工具访问数据库。使用webapplicaton,在后台数据库正常 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-
<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,您需要做的是
<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”会加密数据库“密码是用来通过愚蠢的安全审核的。最终,某个地方会有某种密码,因为系统需要解密密码才能将其发送到数据库。对于一个相对有经验的程序员来说,破解这个问题总是很容易的。“没有任何意义——它是用一个固定的密码加密的,你可以得到一个解密程序。有一个,它被标记为不会修复的,因为“加密数据库”密码是用来通过愚蠢的安全审计的。最终,某个地方会有某种密码,因为系统需要解密密码才能将其发送到数据库。对于一个相对有经验的程序员来说,破解这个问题总是很容易的。”