Javascript XSS源和;lt&;这是正确的吗?

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

我找到了XSS的代码

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不是很安全。我建议找到一个这样做的库。