3

在使用 OWASP 的 ESAPI 时,我发现自己被困在了这行代码中。

private static String customDirectory = System.getProperty("org.owasp.esapi.resources");

代码返回 null,因为我的计算机上没有设置这样的系统属性“org.owasp.esapi.resources”。有没有办法在我的电脑上永久设置这个属性?

4

2 回答 2

4

您需要将其作为命令行属性传递到您的 JVM。大多数应用程序容器使用环境变量 JAVA_OPTS 作为应该传递给 JVM 的选项的“永久”存储。你可以尝试做这样的事情:

在 *nix 中:

export JAVA_OPTS="-Dorg.owasp.esapi.resources=/path/to/esapi/configuration"

在窗口中:

set JAVA_OPTS="-Dorg.owasp.esapi.resources=C:\path\to\esapi\configuration"

您可以将此作为启动命令添加到 windows 或 linux,如果您愿意,它将始终设置,或者将其添加到应用程序的启动脚本以获得更本地化的解决方案。

于 2012-03-26T20:56:14.507 回答
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");
   }
}
于 2020-11-17T09:08:32.827 回答