【问题标题】:How to filter out all non-word characters from user input in Java如何从 Java 中的用户输入中过滤掉所有非单词字符
【发布时间】:2009-06-01 11:40:14
【问题描述】:

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

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

这可能吗?使用“<>><”为 XSS 创建黑名单很容易,但黑客可以解决这个问题。

【问题讨论】:

    标签: java input validation


    【解决方案1】:

    我认为你可能是从错误的方向解决问题。

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

    这样,您可以确保显示的内容与用户输入的内容完全相同,而不会冒您的白名单无意中让一些不良案例通过的风险。

    【讨论】:

    • 从我一直阅读的内容来看,我的印象是你应该有一个非常严格的白名单,因为黑客会找到绕过你的黑名单的方法(例如 ha.ckers.org/xss.html )但是,在这种情况下我想要一个白名单,它不会将输入仅限于美国(或西欧)ASCII,但同时“完全”没有 XSS 漏洞。
    • 你的偏执当然是对的,但我相信你可能偏执了。如果您不对用户输入数据的每个字符进行编码(即将其转换为 %XX 字符代码),那么您总是有可能错过了一个可能的漏洞,因此如果您希望 100% 保证您输出的内容是安全的,你总是可以把它们全部编码。
    猜你喜欢
    • 2017-12-31
    • 2011-06-12
    • 2020-01-29
    • 1970-01-01
    • 2014-04-07
    • 1970-01-01
    • 2015-10-10
    • 2011-08-07
    • 2014-03-31
    相关资源
    最近更新 更多