Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java /示例应用程序/入侵异常]入侵-在URL中检测到混合编码(2x)_Java_Spring Mvc_Jackson_Esapi - Fatal编程技术网

Java /示例应用程序/入侵异常]入侵-在URL中检测到混合编码(2x)

Java /示例应用程序/入侵异常]入侵-在URL中检测到混合编码(2x),java,spring-mvc,jackson,esapi,Java,Spring Mvc,Jackson,Esapi,我正在从数据库中检索URL,它包含特殊字符,如%-=/?所以,当我试图在我的页面中填充该URL时,JSON无法解析该URL,并且在调试时给了我一些异常,我得到了如下结果 (Log4JLogger.java:log:449) [SECURITY FAILURE Anonymous:null@unknown -> /ExampleApplication/IntrusionException] INTRUSION - Mixed encoding (2x) detected 我试图从这些链接中

我正在从数据库中检索URL,它包含特殊字符,如%-=/?所以,当我试图在我的页面中填充该URL时,JSON无法解析该URL,并且在调试时给了我一些异常,我得到了如下结果

(Log4JLogger.java:log:449) [SECURITY FAILURE Anonymous:null@unknown -> /ExampleApplication/IntrusionException] INTRUSION - Mixed encoding (2x) detected
我试图从这些链接中删除我的冒犯性URL

但它不起作用,他提到这个错误已经解决了。但我在这里使用的版本是2.1.0,下面是我的代码

package com.ghn.repufact.review.extractor;

import java.net.URI;
import java.net.URISyntaxException;
import java.util.List;

import javax.ws.rs.core.UriBuilder;

import org.apache.http.NameValuePair;
import org.apache.http.client.utils.URLEncodedUtils;
import org.apache.log4j.Logger;
import org.owasp.esapi.ESAPI;
import org.owasp.esapi.Encoder;
import org.owasp.esapi.Validator;
import org.owasp.esapi.errors.EncodingException;
import org.owasp.esapi.reference.DefaultValidator;
import org.springframework.stereotype.Component;

@Component
public class ValidateURL {
    private static final Logger logger=Logger.getLogger(ValidateResponse.class);
    public  String parseOrgConsumerLink(String myLink) throws URISyntaxException {
        if(myLink==null || "".equalsIgnoreCase(myLink))
            return myLink;
        Encoder enc=ESAPI.encoder();
        URI mixURI=new URI(myLink);
        UriBuilder uriBuider=UriBuilder.fromUri(enc.canonicalize(mixURI.getAuthority()+mixURI.getPath()));
        uriBuider.path(enc.canonicalize(mixURI.getAuthority() + mixURI.getPath()));
        logger.info("Uri after URIbuilder:"+uriBuider.build().toString());
        List<NameValuePair> params = URLEncodedUtils.parse(mixURI, "UTF-8");
        for (NameValuePair nameValuePair : params) 
            uriBuider.queryParam(enc.canonicalize(nameValuePair.getName()), enc.canonicalize(nameValuePair.getValue()));
        String canonicalizedUrl = uriBuider.build().toString();
        logger.info("canonicaliz URI:"+canonicalizedUrl);
        return canonicalizedUrl;
    }

    public boolean isCanonicalizedURI(String myLink) throws EncodingException {
        Validator validator=DefaultValidator.getInstance();
        //boolean flag=validator.isValidInput("test", myLink, "URI", 200, false);
        myLink = ESAPI.encoder().encodeForURL(myLink);

        boolean flag = validator.isValidInput("APPNAME", myLink, "URLSTRING", 600, true, false);
        logger.info("checking for URI:"+myLink+" isCanonical:"+flag);
        return flag;
    }


}
package com.ghn.repufact.review.extractor;
导入java.net.URI;
导入java.net.URISyntaxException;
导入java.util.List;
导入javax.ws.rs.core.UriBuilder;
导入org.apache.http.NameValuePair;
导入org.apache.http.client.utils.URLEncodedUtils;
导入org.apache.log4j.Logger;
导入org.owasp.esapi.esapi;
导入org.owasp.esapi.Encoder;
导入org.owasp.esapi.Validator;
导入org.owasp.esapi.errors.EncodingException;
导入org.owasp.esapi.reference.DefaultValidator;
导入org.springframework.stereotype.Component;
@组成部分
公共类{
私有静态最终记录器=Logger.getLogger(ValidateResponse.class);
公共字符串parseOrgConsumerLink(字符串myLink)引发URI语法异常{
如果(myLink==null | |“”.equalsIgnoreCase(myLink))
返回myLink;
编码器enc=ESAPI.Encoder();
urimixuri=新URI(myLink);
UriBuilder uriBuider=UriBuilder.fromUri(enc.canonicalize(mixURI.getAuthority()+mixURI.getPath());
路径(enc.canonicalize(mixURI.getAuthority()+mixURI.getPath());
info(“uriBuider之后的Uri:+uriBuider.build().toString());
List params=URLEncodedUtils.parse(mixURI,“UTF-8”);
用于(NameValuePair NameValuePair:params)
queryParam(enc.canonicalize(nameValuePair.getName()),enc.canonicalize(nameValuePair.getValue());
字符串canonicalizedUrl=uriBuider.build().toString();
info(“canonicaliz URI:+canonicalizedUrl”);
返回规范化durl;
}
公共布尔值isCanonicalizedURI(字符串myLink)引发EncodingException{
Validator Validator=DefaultValidator.getInstance();
//布尔标志=validator.isValidInput(“test”,myLink,“URI”,200,false);
myLink=ESAPI.encoder().encodeForURL(myLink);
boolean flag=validator.isValidInput(“APPNAME”,myLink,“URLSTRING”,600,true,false);
info(“检查URI:+myLink+”是一个规范:+flag”);
返回标志;
}
}

如果这附近有什么工作,请告诉我。顺便说一句,我使用的是spring MVC,最新版本是2.1.0.1,但它不包含您想要的错误修复。我们仍在准备下一个版本。请共享ESAPI日志中有问题的URL。@avgvstvs:已用有问题的URL更新了问题OK,因此您错过了最底部的一条评论,该底部提供了指向ESAPI项目的链接,其中包含一些实际上更为最新的代码。您链接的原始问题中的代码版本不是黄金时间,它只是为了显示一个基本示例。