OWASP ESAPI验证的性能问题

时间:2015-03-03 00:10:48

标签: java performance security owasp esapi

我们有一个Web应用程序,它使用ESAPI 2.1.0 jar来验证URL和查询字符串(例如http://www.example.com/?keyword=<script>alert("hacking")</script>请求。   我们已经实现了一个新的过滤器类实现基过滤器以在doFilter方法中实现相同的目的。

我们看到同样的主要性能问题。使用下面的代码

示例1:

StringBuffer requestUrl = httpServletRequest.getRequestURL();
String queryString = httpServletRequest.getQueryString();
if (StringUtils.isNotBlank(queryString)) {
requestUrl.append('?').append(queryString);
}
String url = requestUrl.toString();
boolean isSafe = ESAPI.validator().isValidInput("URL", url, "URL", url.length(), true, false);
if (!isSafe) {
 logger.error("uNSAFE : URL contain scripting elements .sOMEONE TRYING TO   MANIPULATE THE url");

validation.properties:
Validator.URL=^(ht|f)tp(s?)\\:\\/\\/[0-9a-zA-Z]([-.\\w]*[0-9a-zA-Z])*(:(0-      9)*)*(\\/?)([a-zA-Z0-9\\-\\.\\?\\,\\:\\'\\/\\\\\\+=&amp;%\\$#_]*)?$

示例2 :(也尝试以下) 用主函数

创建了一个简单的程序
         List<String> myList = myset(); (the list size is 700 which holds valid and malformed/invalid url)
         System.out.println("Total Size of URLS" +myList.size());

    for (int i = 0; i < myList.size(); i++) {
            System.out.println("Item No"  +i);

    boolean isSafe = ESAPI.validator().isValidInput(
            "URL", validation(myList.get(i)), "URL",  url1.length(),false,false);

        }

您能帮助我们了解我们对使用上述逻辑的性能影响吗? (例1和例2) 而且我们观察到UNSAFE URL的性能非常缓慢。

0 个答案:

没有答案