有什么方法可以加密独立应用程序的persistence.xml?

时间:2017-01-03 18:30:29

标签: java jpa

由于我不需要像Glasfish这样的大型框架,我已经使用JPA设置了一个独立的应用程序。这意味着客户端将拥有所有文件,包括persistence.xml。

任何加密方式?既然它会赠送mysql的详细信息..

谢谢!

2 个答案:

答案 0 :(得分:5)

您将软件和配置数据提供给另一方,以便他们在其环境中运行。由于他们控制着这种环境,因此没有理由认为您可以保留您提供的机密信息。特别是,如果你有办法加密persistence.xml,它可能对任何体面的黑客没什么用处,因为你的程序需要 de 加密内容才能使用它们。

我认为您最关心的是数据库访问凭据,因此您的应用程序连接到您管理的中央数据库。如果您的用户对您的信任度至少没有中等程度,那么这是一个相当可疑的计划。

然而,如果以这种方式继续,那么我建议为您授予访问权限的每个用户创建单独的数据库凭据,并尽可能地锁定授予这些用户的访问权限。使用提供细粒度访问控制的数据库可能会有所帮助。您还应该考虑保持审计跟踪/事务日志足以检测并纠正用户可能造成的任何损害(无论是通过试图破解您还是因为软件中的错误)。

答案 1 :(得分:1)

您无法加密persistence.xml。 但是,不是将属性放在persistence.xml中,而是可以在创建EntityManger时传递Map

EntityManager createEntityManager(SynchronizationType synchronizationType, Map map)

http://docs.oracle.com/javaee/7/api/javax/persistence/EntityManagerFactory.html#createEntityManager-javax.persistence.SynchronizationType-java.util.Map-

因此,您可以在另一个文件中加密属性。但是你需要解密凭证以及约翰所说的所有内容。