0

由于设计限制,我目前正在使用的项目不允许我们在纯文本文件(如属性文件(主要是由于安全约束))中编写某些配置参数集。不可访问的配置设计

是否有任何方法来隐藏这些配置参数,以使它们只能被代码编程人员访问。一个普通的Java对象到目前为止是我唯一的想法。

另外,值得注意的是,硬编码值对我们来说不是一个好的解决方案,因为有许多“子应用程序”需要它们自己的配置。在这一点上考虑某种资源包,但仍然会有原始问题。

编辑:所以我遇到Jasypt之际,提出here,但是我觉得我的情况在某种混淆文件的保存,这是足够的,因为它是我们所需要的,以便使用户停止使用配置篡改文件。

+1

通过默默无闻的安全性总是一个坏主意,如果这是你的意思是'隐瞒'。经过一段时间和努力,你的隐藏价值将会显现出来。如果是这种情况,我们可能需要更多关于架构的信息,以便查看是否有更好的可能。你可以在这里阅读更多:https://stackoverflow.com/questions/533965/why-is-security-through-obscurity-a-bad-idea – jackgu1988

+0

嗯,这是一种默默无闻的安全。所以,这笔交易是我们有一台服务器,可以像其他应用程序一样运行,也可以引擎。为了部署应用程序,我们需要编写一组配置。然后将代码部署在我们的客户端服务器的war文件中。情况是,有时或客户周围的客户篡改这种开放的配置,并导致许多令人头痛的问题。所以这就是为什么我们希望配置在部署应用程序时变得模糊。 – jfzr

+0

好吧,我明白了。问题是,如果有人想要,弄清楚一个混淆的文件总是可能的。事实上,如果有任何东西在用户手中,它可能会被破解。没有完美的安全性这样的事情,但混淆甚至远不是好的安全性。我建议你调查是否可以基于某种配置生成war文件(删除所有不相关的代码),而不是基于某种配置运行,如果这样做合理的话。 – jackgu1988

回答

0

使用environment variables

String value = System.getEnv(myKey); 

其在OS经由export foo=bar(* nix中)或SET foo=bar(窗口)中所定义,或系统性能:

String value = System.getProperty(myKey); 

其上java命令定义行,例如java -DmyKey=myValue ...

+0

没有一个好主意,因为它会降低我的代码可移植性,并且仍然可以轻松访问配置。 – jfzr