【发布时间】:2015-01-18 21:30:03
【问题描述】:
我正在开发一个 Struts 2 Web 应用程序,所有常量值和硬编码值都被移动到一个属性文件中id 也放在属性文件中。
最初我将属性文件放在类路径中,并使用如下资源包访问
ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle("config\appProps");
问题在于因为永远环境(DEV / UAT / PROD)的那些环境特定常量,需要通过更改属性文件环境特定常量值来生成单独的战争,以避免我使用下面的过程
我将属性文件的绝对路径保存在 web.xml 的上下文参数中,并从上下文中获取路径并读取属性文件,如下所示
Properties prop = new Properties();
prop.load(new FileInputStream("<<file system absolute path from context param>>"));
这消除了为每个环境生成不同战争的过程,因为服务器上的路径可以保持相同,但我开始知道安全方面我们不应该使用可能暴露服务器文件系统详细信息的绝对路径
请告诉我,通过考虑安全性以及消除为每个环境生成不同的战争文件,在 Web 应用程序中加载属性文件的正确方法是什么。
谢谢。
【问题讨论】:
-
向谁公开服务器文件系统详细信息?
-
嗨 Dave Newton,当我们让我们的代码通过一些应用程序安全工具进行扫描时,它给出了一个高风险的说法,黑客有可能利用文件系统,所以我们不应该使用绝对路径在应用程序中。不确定该安全工具告诉的内容是否有效,因为我们在 web.xml 中没有任何 JSP 文件中的路径。
-
如果他们已经在利用文件系统,那么做任何有价值的事情都为时已晚。如果它不抱怨 web.xml 路径,您可以使用 init-params,您可以在应用服务器上使用 JNDI,等等。
标签: java jakarta-ee web-applications struts2 war