如何在java中过滤输入文本中的特殊字符以防止XSS攻击?
我正在尝试阻止特殊字符,如(&、%,-->,我在代码中看到一些错误。您使用原语(char)作为对象(equals方法)。此外,您不在要测试的字符周围加引号。您应该像这样比较字符如何在java中过滤输入文本中的特殊字符以防止XSS攻击?,java,xss,Java,Xss,我正在尝试阻止特殊字符,如(&、%,-->,我在代码中看到一些错误。您使用原语(char)作为对象(equals方法)。此外,您不在要测试的字符周围加引号。您应该像这样比较字符 u == '%' 我看到你也比较了一个字符串“-”,但同样,它是错误的,你应该使用 "--".equals(u) 我忘了添加,比较单引号字符时应该使用“\” 如果希望使用对象进行测试,可以使用该行创建角色对象: Character u = aa.charAt(i); 但是由于您的代码很简单,我认为它不是很有用。我
u == '%'
我看到你也比较了一个字符串“-”,但同样,它是错误的,你应该使用
"--".equals(u)
我忘了添加,比较单引号字符时应该使用“\”
如果希望使用对象进行测试,可以使用该行创建角色对象:
Character u = aa.charAt(i);
但是由于您的代码很简单,我认为它不是很有用。我看到您的代码中有一些错误。您使用原语(char)作为对象(equals方法)。此外,您也没有在希望测试的字符周围加引号。您应该像这样比较字符
u == '%'
我看到你也比较了一个字符串“-”,但同样,它是错误的,你应该使用
"--".equals(u)
我忘了添加,比较单引号字符时应该使用“\”
如果希望使用对象进行测试,可以使用该行创建角色对象:
Character u = aa.charAt(i);
但是由于您的代码很简单,我认为它不是很有用。我看到您的代码中有一些错误。您使用原语(char)作为对象(equals方法)。此外,您也没有在希望测试的字符周围加引号。您应该像这样比较字符
u == '%'
我看到你也比较了一个字符串“-”,但同样,它是错误的,你应该使用
"--".equals(u)
我忘了添加,比较单引号字符时应该使用“\”
如果希望使用对象进行测试,可以使用该行创建角色对象:
Character u = aa.charAt(i);
但是由于您的代码很简单,我认为它不是很有用。我看到您的代码中有一些错误。您使用原语(char)作为对象(equals方法)。此外,您也没有在希望测试的字符周围加引号。您应该像这样比较字符
u == '%'
我看到你也比较了一个字符串“-”,但同样,它是错误的,你应该使用
"--".equals(u)
我忘了添加,比较单引号字符时应该使用“\”
如果希望使用对象进行测试,可以使用该行创建角色对象:
Character u = aa.charAt(i);
但是由于你的代码很简单,我认为它不是很有用。你在字符文本方面有一些基本的语法错误,例如
u.equals(%)
应该是u.equals(%)
等等,但是如果你使用正则表达式,你可以扔掉大部分代码:
boolean ok = !username.matches(".*[%<>&;'\0-].*");
boolean ok=!username.matches(“.[%&;”\0-].*);
方括号中的字符是字符类,表示“任意一个”列出的字符。如果这些字符中有任何一个在输入中,整个表达式都将匹配,因此对此类匹配的否定表示用户名不包含非法字符。您在字符文本中有一些基本语法错误,例如
u.equals(%)
应该是u.equals('%”)
etc,但如果使用正则表达式,您可以扔掉大部分代码:
boolean ok = !username.matches(".*[%<>&;'\0-].*");
boolean ok=!username.matches(“.[%&;”\0-].*);
方括号中的字符是字符类,表示“任意一个”列出的字符。如果这些字符中有任何一个在输入中,整个表达式都将匹配,因此对此类匹配的否定表示用户名不包含非法字符。您在字符文本中有一些基本语法错误,例如
u.equals(%)
应该是u.equals('%”)
etc,但如果使用正则表达式,您可以扔掉大部分代码:
boolean ok = !username.matches(".*[%<>&;'\0-].*");
boolean ok=!username.matches(“.[%&;”\0-].*);
方括号中的字符是字符类,表示“任意一个”列出的字符。如果这些字符中有任何一个在输入中,整个表达式都将匹配,因此对此类匹配的否定表示用户名不包含非法字符。您在字符文本中有一些基本语法错误,例如
u.equals(%)
应该是u.equals('%”)
etc,但如果使用正则表达式,您可以扔掉大部分代码:
boolean ok = !username.matches(".*[%<>&;'\0-].*");
boolean ok=!username.matches(“.[%&;”\0-].*);
方括号中的字符是字符类,表示“任意一个”列出的字符。如果这些字符中有任何一个在输入中,整个表达式都将匹配,因此对此类匹配的否定表示用户名不包含非法字符。如果您阻止这些字符,您的应用程序将仍然容易受到XSS攻击。您缺少一些危险的字符。 与其尝试识别坏字符(黑名单),为什么不检查它只包含允许的字符(白名单)。通常允许的字符集非常有限
另外,请查看OWASP XSS预防备忘单。如果您阻止这些字符,您的应用程序仍然会受到XSS的攻击。您缺少一些危险的字符。 与其尝试识别坏字符(黑名单),为什么不检查它只包含允许的字符(白名单)。通常允许的字符集非常有限
另外,请查看OWASP XSS预防备忘单。如果您阻止这些字符,您的应用程序仍然会受到XSS的攻击。您缺少一些危险的字符。 与其尝试识别坏字符(黑名单),为什么不检查它只包含允许的字符(白名单)。通常允许的字符集非常有限
另外,请查看OWASP XSS预防备忘单。如果您阻止这些字符,您的应用程序仍然会受到XSS的攻击。您缺少一些危险的字符。 与其尝试识别坏字符(黑名单),为什么不检查它只包含允许的字符(白名单)。通常允许的字符集非常有限 还可以查看OWASP XSS预防备忘单。