OWASP html sanitizer - 为什么它不转义某些实体?

Bra*_*rks 5 java sanitization owasp

我是 Owasp 的新手,它是 HTML sanitizer,发现使用我使用的任何策略,它都会将某些实体转义回字符。

例如这个字符串:

@ test !
Run Code Online (Sandbox Code Playgroud)

变成这样:

@ test !
Run Code Online (Sandbox Code Playgroud)

我想尽可能地让实体“保持原样”。如果它正在逃避他们,而不是逃避他们,我什至会理解它。

那么这可以用消毒剂吗?无论我尝试使用什么策略,它似乎都能做到。

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

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);
  }
}
Run Code Online (Sandbox Code Playgroud)

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

Mik*_*uel 5

Sanitizer 解码文本节点,然后重新编码它们以阻止编码级攻击,这样它就可以确保输出尽可能接近 HTML 和 XML 的交集,从而最大限度地减少幼稚的​​后处理器重新编码的机会。引入漏洞。