java – OWASP html sanitizer – 为什么它会覆盖某些实体?

我是Owasp的新用户,它是
HTML清理程序,并且发现使用我使用的任何策略,它都会将一些实体转移回字符.

例如这个字符串:

@ test !

变成了这个:

@ test !

我想尽可能“按现状”离开实体.我甚至可以理解它是否逃避它们,而不是取消它们.

这可能与消毒剂有关吗?无论我尝试使用什么政策,它似乎都会这样做.

这是我为简单测试运行的代码:

package com.my.company.test;

import org.junit.Test;
import org.owasp.html.PolicyFactory;
import org.owasp.html.Sanitizers;

import junit.framework.TestCase;

public class OwaspSanitizerTest extends TestCase {
  public static final PolicyFactory POLICY = Sanitizers.IMAGES;

  @Test
  public static final void testTextFilter() throws Exception {
      String data = "@ test !";
      String result = POLICY.sanitize(data);

      System.out.println(result);

      assertEquals("@ test !", result);
  }
}

编辑:我问的原因是我希望我的用户输入尽可能匹配我们输出的内容.我知道在某些情况下这是不可能的,但是预计会出现这种情况.

最佳答案 清理程序对文本节点进行解码,然后对它们进行重新编码以阻止编码级别的攻击,从而确保输出尽可能接近HTML和XML的交集,以最大限度地减少天真的后处理器重新生成的可能性.引入漏洞.

点赞