我的网址就像
http://example.com/value=S%0a%0d"><'脚本>警报(0)<' /脚本'>%20"
所以我在servlet中打印请求参数的值
String Value=request.getParameter("value");
System.out.print("URL :"+Value);
输出如:
网址:S
"><'脚本>警报(0)<' /脚本'>%20
它以两行打印。我尝试了以下所有代码来替换"%0A%0D"字符。
Value = value.replace('\n', ' ');
Value = value.replace('\r', ' ');
Value = value.replace("\n", "");
value = value.replace("\r", "");
value = value.replaceAll("0A", "");
value = value.replaceAll("0D", "");
value = value.replaceAll("%0A", "");
value = value.replaceAll("%0D", "");
value = value.replaceAll("%0A%0D", "");
但它只检查输出的第一行。那么如何从URL中删除这些字符
答案 0 :(得分:0)
为了防止XSS,我会建议反对一个字符替换,就像你在示例代码段中使用的那样。你必然会忘记你所替换的人物名单中的某些内容,而你的申请可能仍然容易受到攻击。
相反,我建议使用: https://www.owasp.org/index.php/OWASP_Java_Encoder_Project