如何在Java中从用户输入中过滤掉所有非单词字符

如何在Java中从用户输入中过滤掉所有非单词字符,java,input,validation,Java,Input,Validation,我试图从用户名输入中过滤掉所有可能的XSS,同时仍然允许输入外来名称 用多种语言(包括中文、日文和俄文)列出所有单词字符的最佳方法是什么 这可能吗?创建带有“”的XSS黑名单很容易,但是黑客可以解决这个问题。我认为您可能从错误的方向解决了这个问题 通常,防止XSS漏洞是确保您在网站上显示的任何用户生成的内容都被正确转义的一种情况 通过这种方式,您可以确保显示的内容与用户输入的内容完全一致,而不会有您的白名单无意中泄露一些不良案例的风险。从我阅读的内容中,我得到的印象是,您应该有一个非常严格的白名

我试图从用户名输入中过滤掉所有可能的XSS,同时仍然允许输入外来名称

用多种语言(包括中文、日文和俄文)列出所有单词字符的最佳方法是什么


这可能吗?创建带有“
”的XSS黑名单很容易,但是黑客可以解决这个问题。

我认为您可能从错误的方向解决了这个问题

通常,防止XSS漏洞是确保您在网站上显示的任何用户生成的内容都被正确转义的一种情况


通过这种方式,您可以确保显示的内容与用户输入的内容完全一致,而不会有您的白名单无意中泄露一些不良案例的风险。

从我阅读的内容中,我得到的印象是,您应该有一个非常严格的白名单,因为黑客会找到绕过您的黑名单的方法(例如,在这种情况下,我想要一个白名单,它不会将输入限制为仅限美国(或西欧)ASCII,但同时“完全”没有XSS漏洞。当然,你的偏执是对的,但我相信你可能太偏执了。如果您没有对用户输入数据的每个字符进行编码(即将其转换为%XX个字符的代码),那么您总是有可能遗漏了一个可能的漏洞,因此如果您希望100%确保您的输出是安全的,您可以始终对其进行编码。