Javascript XSS源和;lt&;这是正确的吗?
我找到了XSS的代码Javascript XSS源和;lt&;这是正确的吗?,javascript,java,xss,gt,Javascript,Java,Xss,Gt,我找到了XSS的代码 private String cleanXSS(String value) { value = value.replaceAll("<", "& lt;").replaceAll(">", "& gt;"); value = value.replaceAll("\\(", "& #40;").r
private String cleanXSS(String value) {
value = value.replaceAll("<", "& lt;").replaceAll(">", "& gt;");
value = value.replaceAll("\\(", "& #40;").replaceAll("\\)", "& #41;");
value = value.replaceAll("'", "& #39;");
value = value.replaceAll("eval\\((.*)\\)", "");
value = value.replaceAll("[\\\"\\\'][\\s]*javascript:(.*)[\\\"\\\']", "\"\"");
value = value.replaceAll("script", "");
return value;
}
private String cleanXSS(字符串值){
value=value.replaceAll(“,”>;”);
value=value.replaceAll(“\\(”、“&”40;”).replaceAll(“\\”)、“&”41;”;
value=value.replaceAll(“'”、“';”);
value=value.replaceAll(“eval\\(.*)\\”,“”);
value=value.replaceAll(“[\\\”\\\\'][\\s]*javascript:(.*)[\\\\“\\\']],“\\”);
value=value.replaceAll(“脚本”,“脚本”);
返回值;
}
它正确吗
我认为
<
>
。。。是正确的,在&
和lt
之间没有空格,替换为
,
和'
是HTML编码的一部分,在HTML上下文中输出时可以使用它们。但是它缺少“
和&;
。这是规则1
剩下的使用script
和eval
没有多大意义。它会损坏有效的用户输入。eval()
replacement将永远不会匹配,因为它已被替换为括号。它会检查script
,但不会检查script
。scscript
转换为script
。还有其他执行JS的方法,它不会查找
尝试查找特定字符串并不能真正起作用。最好在输出时应用正确的编码,并按照OWASP指南小心输出值的位置。一般来说,自己清理XSS不是很安全。我建议找到一个这样做的库。