【发布时间】:2020-07-23 17:46:18
【问题描述】:
我在配置 ESAPI 以使其与我的 Spring Boot Web 应用程序(maven 项目)一起工作时遇到问题。
我从这个 URL 中选择了这部分来将 ESAPI.properties 放在一个特定的目录中:
引用 {@code SecurityConfiguration} 在一个地方管理 ESAPI 使用的所有设置。在这个参考 * 实现,资源可以放在几个位置,按以下顺序搜索: *
* 1) 在通过调用 SecurityConfiguration.setResourceDirectory("C:\temp\resources") 设置的目录中。 *
所以这是我的代码:
1 - 在 application.properties 中:
esapi.path=/data/folder/testApp/Apps/MyApp/ESAPIConf
2 - 在 StartupApplication.java 中(在我的应用程序启动时只执行一次的类):
@Component
public class StartupApplication implements InitializingBean {
@Autowired
private Environment env;
@Override
@Transactional
public void afterPropertiesSet() throws Exception {
new GlobalVars();
GlobalVars.esapiPropertyFilePath = env.getProperty("esapi.path");
// this setResourceDirectory to be executed once
ESAPI.securityConfiguration().setResourceDirectory(GlobalVars.esapiPropertyFilePath);
...etc
}
3 - 在我的 jsp 页面:
<form action="#" method="POST" onsubmit="linkVariabletoDBFields()">
<input type="hidden" name = "nameconf" id="nameconf" value="<%=ESAPI.encoder().encodeForHTMLAttribute(request.getParameter("confname")) %>" />
问题:
当应用程序服务器(JBOSS EAP 7.2)启动时,更具体地说,当 StartupApplication 类被执行时,setResourceDirectory 正在返回:
ESAPI: Reset resource directory to: /data/folder/testApp/Apps/MyApp/ESAPIConf
ESAPI: Attempting to load ESAPI.properties via file I/O.
ESAPI: Attempting to load ESAPI.properties as resource file via file I/O.
ESAPI: Not found in 'org.owasp.esapi.resources' directory or file not readable: /home/linuxuser/ESAPI.properties
ESAPI: Not found in SystemResource Directory/resourceDirectory: /data/folder/testApp/Apps/MyApp/ESAPIConf/ESAPI.properties
ESAPI: Not found in 'user.home' (/home/linuxuser) directory: /home/linuxuser/esapi/ESAPI.properties
ESAPI: Loading ESAPI.properties via file I/O failed. Exception was: java.io.FileNotFoundException
ESAPI: Attempting to load ESAPI.properties via the classpath.
ESAPI: SUCCESSFULLY LOADED ESAPI.properties via the CLASSPATH from '/ (root)' using current thread context class loader!
ESAPI: SecurityConfiguration for Validator.ConfigurationFile.MultiValued not found in ESAPI.properties. Using default: false
ESAPI: Attempting to load validation.properties via file I/O.
ESAPI: Attempting to load validation.properties as resource file via file I/O.
ESAPI: Not found in 'org.owasp.esapi.resources' directory or file not readable: /home/linuxuser/validation.properties
ESAPI: Not found in SystemResource Directory/resourceDirectory: /data/folder/testApp/Apps/MyApp/ESAPIConf/validation.properties
ESAPI: Not found in 'user.home' (/home/linuxuser) directory: /home/linuxuser/esapi/validation.properties
ESAPI: Loading validation.properties via file I/O failed.
ESAPI: Attempting to load validation.properties via the classpath.
ESAPI: SUCCESSFULLY LOADED validation.properties via the CLASSPATH from 'esapi/' using current thread context class loader!
虽然文件存在于/data/folder/testApp/Apps/MyApp/ESAPIConf
,但它找不到属性文件当我访问我的 jsp 页面时,我得到了:
Error : org.owasp.esapi.errors.ConfigurationException: java.lang.reflect.InvocationTargetException Encoder class (org.owasp.esapi.reference.DefaultEncoder) CTOR threw exception.
我猜是因为找不到 ESAPI.properties。
请帮忙。
【问题讨论】:
-
您的应用程序是否有适当的参数来在非标准位置查找属性文件?
-
文件权限是什么?
-
您的问题出在其他地方。注意这一行:
ESAPI: SUCCESSFULLY LOADED ESAPI.properties via the CLASSPATH from '/ (root)' using current thread context class loader! -
如果您阅读上面提到的 URL,您会发现 ESAPI 会尝试在不同的位置进行搜索。虽然我的文件放在“/data/folder/testApp/Apps/MyApp/ESAPIConf”中,具有 rw-rw-rw 权限,并且具有运行 Jboss 和同一组的相同用户
-
尝试
data/folder/testApp/Apps/MyApp/ESAPIConf会发生什么
标签: java spring-boot maven owasp esapi