跨站点脚本(XSS)如何在Java中防止来自%0A%0D的URL?

时间:2015-02-16 13:27:12

标签: java servlets xss

我的网址就像

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中删除这些字符

1 个答案:

答案 0 :(得分:0)

为了防止XSS,我会建议反对一个字符替换,就像你在示例代码段中使用的那样。你必然会忘记你所替换的人物名单中的某些内容,而你的申请可能仍然容易受到攻击。

相反,我建议使用: https://www.owasp.org/index.php/OWASP_Java_Encoder_Project