如何从servlet容器中开始使用ESAPI

时间:2015-06-29 15:29:48

标签: esapi

是否有人可以考虑在无网络环境中开始使用ESAPI? 我参加了这个用DefaultValidator.isValidCreditCard验证字符串的小测试,但是我遇到了一些web容器依赖错误。

Junit测试使用以下方法:

@Override
public ValidationErrorList creditCard(String value) {
    this.value = value;
    ValidationErrorList errorList = new ValidationErrorList();
    try {
        isValid = validator.isValidCreditCard(null, value, false, errorList);
    }catch(Exception ie){
        System.out.println(">>> CCValidator: [ " + value + "] " +  ie.getMessage());
        messages = (ArrayList) errorList.errors();
    }
    return messages;
}

这是我得到的错误(相关部分)当然我没有在容器中运行:

Attempting to load ESAPI.properties via file I/O.
Attempting to load ESAPI.properties as resource file via file I/O.
Found in 'org.owasp.esapi.resources' directory: C:\foundation\validation\providers\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.
Found in 'org.owasp.esapi.resources' directory: C:\foundation\validation\providers\esapi\validation.properties
Loaded 'validation.properties' properties file
SecurityConfiguration for Encoder.AllowMixedEncoding not found in ESAPI.properties. Using default: false
SecurityConfiguration for Encoder.AllowMixedEncoding not found in ESAPI.properties. Using default: false

javax/servlet/ServletRequest
java.lang.NoClassDefFoundError: javax/servlet/ServletRequest
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:264)
    at org.owasp.esapi.util.ObjFactory.make(ObjFactory.java:74)
    at org.owasp.esapi.ESAPI.httpUtilities(ESAPI.java:121)
    at org.owasp.esapi.ESAPI.currentRequest(ESAPI.java:70)
    at org.owasp.esapi.reference.Log4JLogger.log(Log4JLogger.java:434)
...

调用ESAPI..xxxMethods()也会引发依赖性错误。

任何有关入门的建议都将受到赞赏。

最好,

1 个答案:

答案 0 :(得分:1)

ESAPI有一个servlet过滤器API,需要javax.servlet.ServletRequest在类路径上。 ESAPI归OWASP所有 - > "打开Web应用程序安全项目。"因此,ESAPI在设计时考虑了Web应用程序。

如果您没有编写Web应用程序,那么它可以是控制台应用程序,也可以是富客户端应用程序。如果您不希望使用它来连接到外部世界,那么您真正需要担心的主要安全实践是ensuring that you always use safely parameterized queries,并且从连接的源传递到您的应用程序的任何数据对外界的妥善逃脱。为此,您唯一需要的是OWASP's encoder project.