当前位置: 首页 > 知识库问答 >
问题:

如何允许特定字符与OWASP HTML消毒剂?

周涵畅
2023-03-14

我正在使用OWASP Html消毒剂来防止对我的web应用程序的XSS攻击。对于许多应该是纯文本的字段,消毒剂的作用比我预期的要大。

HtmlPolicyBuilder htmlPolicyBuilder = new HtmlPolicyBuilder();
stripAllTagsPolicy = htmlPolicyBuilder.toFactory();
stripAllTagsPolicy.sanitize('a+b'); // return a+b
stripAllTagsPolicy.sanitize('foo@example.com'); // return foo@example.com
    null

问题2对我来说是一个更重要的问题。

共有1个答案

宦砚
2023-03-14

您可能希望使用ESAPI API来筛选特定字符。不过,如果您希望允许特定的HTML元素或属性,可以使用下面的allowElements和AllowAttributes。

//定义策略。

Function<HtmlStreamEventReceiver, HtmlSanitizer.Policy> policy
     = new HtmlPolicyBuilder()
         .allowElements("a", "p")
         .allowAttributes("href").onElements("a")
         .toFactory();

 // Sanitize your output.
 HtmlSanitizer.sanitize(myHtml, policy.apply(myHtmlStreamRenderer));
 类似资料:
  • 我有正则表达式,它测试以下规则, < li >密码必须至少有一个字符。 < li >密码必须至少有一个数字。 < li >密码必须至少有一个字母数字字符。(应允许多个) 我的尝试是这样的, 在大多数情况下,这工作正常,除非我添加多个字母数字字符。 测验 测试[qwer1234]结果[无效]结论[通过] 测试[qwer1234$]结果[有效]结论[通过] 测试[qwer1234#$]结果[无效]结论

  • 我正在考虑从Hibernate转移到jOOQ,但我找不到例如如何在Hibernate中对这样的进行Pattern约束: 在jOOQ我该怎么做?

  • 我需要一个javascript正则表达式来验证电话号码。数字不能是单个零或仅为零。 e. g. 这些是不允许的。 但这些是允许的: 到目前为止,我拥有的javascript正则表达式是: 但这似乎不起作用。 规则是电话号码可以包含数字和和和。它可以以0开头,但电话号码不能是单个0或仅包含或不包含上述字符的多个零。 你能给我指一下正确的方向吗。提前谢谢。

  • 我已经在谷歌上搜索了这个,也在StackOverflow上搜索了一个答案。但是,对于如何净化复选框值,还没有一个明确的答案。 我明白,如果我的输入是: 那么,我应该如何消毒复选框/收音机输入?我应该用(int)检查值吗?我应该像处理其他输入/选择字段一样清理值吗? 记录在案的是,我正在使用WordPress开发我的网站,例如,为了净化文本输入,我正在这样做: 我也应该在复选框上运行所有这些检查吗?

  • 我正在使用拆分一个字符串。我收到的字符串有这样的结构: 其中<代码> 除非是空字符串,否则这可以正常工作。在这种情况下,只会跳过数据。 我想要一个字符串,如<代码>[数据] 我该怎么做?

  • 我们有正则表达式来验证一个数字、一个大写字母和一个小写字母的密码。正则表达式是: 这个正则表达式不允许任何特殊字符。我需要更改正则表达式以允许一些特殊字符列表,并且不应该有任何限制,必须至少有一个特殊字符。只有