gpt4 book ai didi

java - 清理 url 以防止因 CR LF 造成的攻击

转载 作者:行者123 更新时间:2023-12-01 13:15:38 25 4
gpt4 key购买 nike

我在我的应用程序中看到了这段代码。有人可以帮助我了解这如何帮助清理请求 URL 以防止因 CR/LF 造成的任何攻击吗?

public static String validaterequestURL(String requestURL) throws EncodingException {
Encoder encoder = new DefaultEncoder(new ArrayList<String>());
//canonicalize
String clean = encoder.canonicalize(requestURL).trim();
clean = encoder.decodeFromrequestURL(clean);
int idxR = clean.indexOf('\r');
int idxN = clean.indexOf('\n');
if(idxN >= 0 || idxR>=0){
if(idxN>idxR){
clean = clean.substring(0,idxN-1);
}
else{
clean = clean.substring(0,idxR-1);
}
}
return clean;
}

我特别想了解以下几行是如何工作的?

int idxR = clean.indexOf('\r');
int idxN = clean.indexOf('\n');
if(idxN >= 0 || idxR>=0){
if(idxN>idxR){
clean = clean.substring(0,idxN-1);
}
else{
clean = clean.substring(0,idxR-1);
}
}

最佳答案

如果存在 \n (换行/换行)或 \r (回车)字符,则相应的索引(其在字符串中的位置)将 >= 0。如果是这样,substring 操作会截断字符串,删除有问题的字符及其后面的所有内容。

逻辑似乎是这样设置的:如果两者 \n\r 都被发现,则只有两者中的后者(以及其后的任何内容)将被删除。我不知道为什么作者认为这是个好主意;我原以为会从之前的内容中进行截断。

关于java - 清理 url 以防止因 CR LF 造成的攻击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22497973/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com