我正在使用 OWASP Html Sanitizer 来防止对我的 Web 应用程序的 XSS 攻击。对于许多应该是纯文本的字段,Sanitizer 的作用超出了我的预期。
例如:
HtmlPolicyBuilder htmlPolicyBuilder = new HtmlPolicyBuilder();
stripAllTagsPolicy = htmlPolicyBuilder.toFactory();
stripAllTagsPolicy.sanitize('a+b'); // return a+b
stripAllTagsPolicy.sanitize('foo@example.com'); // return foo@example.com
当我有诸如电子邮件地址之类的字段+
时,例如foo+bar@gmail.com
我最终在数据库中得到了错误的数据。所以两个问题:
- 诸如
+ - @
危险的字符本身是否真的需要编码? - 如何配置 OWASP html sanitizer 以允许特定字符,例如 + - @?
问题 2 对我来说是更重要的一个答案。