使用OWASP的ESAPI,我发现自己陷入了这个特定的代码行。
private static String customDirectory = System.getProperty("org.owasp.esapi.resources");
代码返回null,因为我的计算机上没有设置此类系统属性“org.owasp.esapi.resources”。有没有办法永久地在我的计算机上设置此属性?
答案 0 :(得分:3)
您需要将其作为命令行属性传递到JVM中。大多数应用程序容器使用环境变量JAVA_OPTS作为应该传递给JVM的“永久”选项存储。您可以尝试这样做:
在* nix中:
export JAVA_OPTS="-Dorg.owasp.esapi.resources=/path/to/esapi/configuration"
在Windows中:
set JAVA_OPTS="-Dorg.owasp.esapi.resources=C:\path\to\esapi\configuration"
您可以将其作为启动命令添加到Windows或Linux中,如果需要,它将始终设置,或者将其添加到应用程序的启动脚本中以获得更加本地化的解决方案。
答案 1 :(得分:0)
如果将ESAPI.properties和Validation.properties放在资源文件夹中,它将自动识别。
如果需要指定特定的文件夹或子文件夹,一种可能性是在独立服务器中添加此属性。
<system-properties>
<property name="org.owasp.esapi.resources" value="C:/.../resources/esapi"/>
<system-properties>
但是,在单元测试中,必须在测试之前指定。
@BeforeClass
public static void before() {
if(System.getProperty("org.owasp.esapi.resources") != null) {
System.out.println(System.getProperty("org.owasp.esapi.resources"));
} else {
System.setProperty("org.owasp.esapi.resources", "src/main/resources");
}
}