是否存在可绕过该C#防XSS验证的Payload?是否需编码防护?
XSS防范算法问题解答
有没有能绕过这个算法的XSS Payload?
没有。XSS攻击的核心是利用特殊字符(比如<、>、"、'这类)或者JavaScript语法构造恶意代码,而你的算法直接拒绝了所有非字母数字的输入,任何包含危险字符的Payload都会被拦截,根本没法进入系统。
仅靠这个验证够不够?要不要搭配编码算法?
分两种情况看:
- 如果你的业务场景只允许用户输入字母数字,那这个验证完全够用——没有特殊字符就没法构造XSS语句,从根源上切断了攻击可能。
- 但如果未来业务有变化,需要允许用户输入合法的特殊字符(比如标点、空格等),那这个验证就不适用了,必须搭配数据编码算法(比如输出到HTML时做HTML编码,输出到URL时做URL编码,根据具体输出场景选择)。
- 另外,哪怕现在只允许字母数字,在输出用户输入内容时做编码也没坏处,属于双重防护,能避免未来业务变更时可能出现的疏漏。
内容的提问来源于stack exchange,提问作者KosD
相关产品推荐
相关产品推荐

