由于我不需要像Glasfish这样的大型框架,我已经使用JPA设置了一个独立的应用程序。这意味着客户端将拥有所有文件,包括persistence.xml。
任何加密方式?既然它会赠送mysql的详细信息..
谢谢!
答案 0 :(得分:5)
您将软件和配置数据提供给另一方,以便他们在其环境中运行。由于他们控制着这种环境,因此没有理由认为您可以保留您提供的机密信息。特别是,如果你有办法加密persistence.xml
,它可能对任何体面的黑客没什么用处,因为你的程序需要 de 加密内容才能使用它们。
我认为您最关心的是数据库访问凭据,因此您的应用程序连接到您管理的中央数据库。如果您的用户对您的信任度至少没有中等程度,那么这是一个相当可疑的计划。
然而,如果以这种方式继续,那么我建议为您授予访问权限的每个用户创建单独的数据库凭据,并尽可能地锁定授予这些用户的访问权限。使用提供细粒度访问控制的数据库可能会有所帮助。您还应该考虑保持审计跟踪/事务日志足以检测并纠正用户可能造成的任何损害(无论是通过试图破解您还是因为软件中的错误)。
答案 1 :(得分:1)
您无法加密persistence.xml。 但是,不是将属性放在persistence.xml中,而是可以在创建EntityManger时传递Map
EntityManager createEntityManager(SynchronizationType synchronizationType, Map map)
因此,您可以在另一个文件中加密属性。但是你需要解密凭证以及约翰所说的所有内容。