0

我正在尝试在我的项目中使用 OWASP ESAPI。但问题是owasp文档对我来说太复杂了。我正在尝试使用 esapi 的验证,但即使没有错误,我也无法获得结果。

import org.owasp.esapi.ESAPI;
import org.owasp.esapi.Validator;

public void security(String s) {
        System.out.println("connect 1");
        Validator instance = ESAPI.validator();
        System.out.println("connect 2");
        System.out.println(instance.isValidInput("test", "xxxxx@gmail.com", "Email", 100, false));
    }

如果我尝试运行 3 次,结果如下:

    connect 1
    Attempting to load ESAPI.properties via file I/O.
    Attempting to load ESAPI.properties as resource file via file I/O.
    Not found in 'org.owasp.esapi.resources' directory or file not readable: C:\Program Files\Apache Software Foundation\Apache Tomcat 7.0.22\bin\ESAPI.properties
    Not found in SystemResource Directory/resourceDirectory: .esapi\ESAPI.properties
    Found in 'user.home' directory: C:\Users\xxxx\esapi\ESAPI.properties
    Loaded 'ESAPI.properties' properties file
    Attempting to load validation.properties via file I/O.
    Attempting to load validation.properties as resource file via file I/O.
    Not found in 'org.owasp.esapi.resources' directory or file not readable: C:\Program Files\Apache Software Foundation\Apache Tomcat 7.0.22\bin\validation.properties
    Not found in SystemResource Directory/resourceDirectory: .esapi\validation.properties
    Found in 'user.home' directory: C:\Users\xxxx\esapi\validation.properties
    Loaded 'validation.properties' properties file
connect 1
connect 1

如您所见,没有错误并且属性已正确加载。我的问题是为什么它停在那里。为什么没有打印“连接 2”?为什么 instance.isValidInput 的结果也没有打印出来?

4

3 回答 3

0

您没有在 esapi 配置中正确设置 ESAPI 资源路径。一旦你完成了,你应该是金色的。

试试这个链接:

ESAPI 资源目录设置

于 2012-06-29T11:42:30.523 回答
0

很好,您正在使用 ESAPI。首先,该项目是 maven 还是 eclipse 或 ant 或其他?每种类型都有一个用于放置属性文件的特定位置,以便在第一次调用 ESAPI 时在运行时加载它们。浏览 google 中提供的 ESAPI 安装指南。但是从日志中可以清楚地看出这两个文件都已成功加载。发布您在文件中可能拥有的更多日志。问题可能是您正在验证并尝试使用方法 getVALidInput() 并使用错误的正则表达式来获取电子邮件地址。从文件和控制台发布完整的正则表达式代码和异常日志。

于 2012-06-29T12:10:16.913 回答
0

对于验证,我直接在需要验证用户输入的地方使用了此代码。

String validatedAlertId = ESAPI.validator().getValidInput("alertId", alertId, "AlertIdRejex", 25, false);

你可能有这样的事情。

    public String security(String s) {
            System.out.println("connect 1");
            valiDatedString = ESAPI.validator().getValidInput("test", "xxxxx@gmail.com", "Email", 100, false);                
            System.out.println("connect 2"+valiDatedString);
            return valiDatedString
        }

// 调用类/对象

AAAA.security 此代码对我有用。对于 net beans 及其属性文件的配置,请查看此 url

于 2012-07-02T05:32:41.593 回答