Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
java-html-sanitizer — Pega HTML de terceiros e produz HTML seguro para incorporar em sua aplicação web. Rápido e fácil de configurar. | Kitploit
Ferramentas/GitHubGitHub/owasp/java-html-sanitizer
Ferramentas DefensivasAnálise EstáticaAnálise de CódigoSegurança WebConfiguração IncorretaSegurança de API
GitHubowasp/java-html-sanitizer

java-html-sanitizer

Pega HTML de terceiros e produz HTML seguro para incorporar em sua aplicação web. Rápido e fácil de configurar.

Ver Repositório
9482365há 5h 32mRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

OWASP Java HTML Sanitizer

Java CI with Maven Coverage Status CII Best Practices Maven Central

Um Sanitizador HTML rápido e fácil de configurar, escrito em Java, que permite incluir HTML criado por terceiros em sua aplicação web, protegendo contra XSS.

A dependência existente é o JSR 305. Os outros jars são necessários apenas para a suíte de testes. A dependência JSR 305 é uma dependência apenas de compilação, necessária apenas para anotações.

Este código foi escrito com as melhores práticas de segurança em mente, possui uma suíte de testes extensa e passou por uma revisão de segurança adversarial.

Tabela de Conteúdos

Primeiros Passos
  • Políticas Pré-empacotadas
  • Criando uma Política
  • Políticas Personalizadas
  • Pré-processadores
  • Telemetria
  • Dúvidas?
  • Contribuindo
  • Créditos
  • Primeiros Passos

    Primeiros Passos inclui instruções sobre como começar com ou sem Maven.

    Políticas Pré-empacotadas

    Você pode usar políticas pré-empacotadas:

    root@kitploit:~
    PolicyFactory policy = Sanitizers.FORMATTING.and(Sanitizers.LINKS);
    String safeHTML = policy.sanitize(untrustedHTML);
    

    Criando uma Política

    Os testes mostram como configurar sua própria política:

    root@kitploit:~
    PolicyFactory policy = new HtmlPolicyBuilder()
        .allowElements("a")
        .allowUrlProtocols("https")
        .allowAttributes("href").onElements("a")
        .requireRelNofollowOnLinks()
        .toFactory();
    String safeHTML = policy.sanitize(untrustedHTML);
    

    Políticas Personalizadas

    Você pode escrever políticas personalizadas para fazer coisas como transformar h1s em divs com uma certa classe:

    root@kitploit:~
    PolicyFactory policy = new HtmlPolicyBuilder()
        .allowElements("p")
        .allowElements(
            (String elementName, List<String> attrs) -> {
              // Add a class attribute.
              attrs.add("class");
              attrs.add("header-" + elementName);
              // Return elementName to include, null to drop.
              return "div";
            }, "h1", "h2", "h3", "h4", "h5", "h6")
        .toFactory();
    String safeHTML = policy.sanitize(untrustedHTML);
    

    Por favor, note que os elementos "a", "font", "img", "input" e "span" precisam ser explicitamente incluídos na lista de permissões usando o método allowWithoutAttributes() se você quiser que eles sejam permitidos pelo filtro quando esses elementos não incluírem nenhum atributo.

    Políticas de atributos permitem executar código personalizado também. Adicionar uma política de atributos não enfraquecerá nenhuma política padrão, como verificações de atributos style ou URL.

    root@kitploit:~
    new HtmlPolicyBuilder = new HtmlPolicyBuilder()
        .allowElement("div", "span")
        .allowAttributes("data-foo")
            .matching(
                (String elementName, String attributeName, String value) -> {
                  // Return value for the attribute or null to drop.
                })
            .onElements("div", "span")
        .build()
    

    Pré-processadores

    Pré-processadores permitem inserir texto e fazer grandes alterações estruturais.

    root@kitploit:~
    new HtmlPolicyBuilder = new HtmlPolicyBuilder()
        // Use a preprocessor to be backwards compatible with the
        // <plaintext> element which 
        .withPreprocessor(
            (HtmlStreamEventReceiver r) -> {
              // Provide user with info about links before they click.
              // Before:                       <a href="https://example.com/...">
              // After:  (https://example.com) <a href="https://example.com/...">
              return new HtmlStreamEventReceiverWrapper(r) {
                @Override public void openTag(String elementName, List<String> attrs) {
                  if ("a".equals(elementName)) {
                    for (int i = 0, n = attrs.size(); i < n; i += 2) {
                      if ("href".equals(attrs.get(i)) {
                        String url = attrs.get(i + 1);
                        String origin;
                        try {
                          URI uri = new URI(url);
                          String scheme = uri.getScheme();
                          String authority = uri.getRawAuthority();
                          if (scheme == null && authority == null) {
                            origin = null;
                          } else {
                            origin = (scheme != null ? scheme + ":" : "")
                                   + (authority != null ? "//" + authority : "");
                          }
                        } catch (URISyntaxException ex) {
                          origin = "about:invalid";
                        }
                        if (origin != null) {
                          text(" (" + origin + ") ");
                        }
                      }
                    }
                  }
                  super.openTag(elementName, attrs);
                }
              };
            }
        .allowElement("a")
        ...
        .build()
    
    

    O pré-processamento ocorre antes da aplicação de uma política, portanto não pode afetar a segurança da saída.

    Telemetria

    Quando uma política rejeita um elemento ou atributo, ela notifica um HtmlChangeListener.

    Você pode usar isso para acompanhar tendências de violação de políticas e descobrir quando alguém está tentando quebrar sua segurança.

    root@kitploit:~
    PolicyFactory myPolicyFactory = ...;
    // If you need to associate reports with some context, you can do so.
    MyContextClass myContext = ...;
    
    String sanitizedHtml = myPolicyFactory.sanitize(
        unsanitizedHtml,
        new HtmlChangeListener<MyContextClass>() {
          @Override
          public void discardedTag(MyContextClass context, String elementName) {
            // ...
          }
          @Override
          public void discardedAttributes(
              MyContextClass context, String elementName, String... attributeNames) {
            // ...
          }
        },
        myContext);
    

    Nota: Se uma string for sanitizada sem notificações de alteração, isso não significa que a string de entrada seja necessariamente segura para uso. Use apenas a saída do sanitizador.

    O sanitizador garante que a saída esteja em um subconjunto de HTML sobre o qual analisadores HTML comuns concordarão quanto ao significado, mas a ausência de notificações não significa que a entrada esteja nesse subconjunto, apenas que ela não contém elementos ou atributos que foram removidos.

    Veja "Por que sanitizar quando você pode validar" para mais informações sobre este tópico.

    Dúvidas?

    Se você deseja relatar uma vulnerabilidade, consulte AttackReviewGroundRules.

    Inscreva-se na lista de discussão para ser notificado sobre Vulnerabilidades conhecidas e atualizações importantes.

    Contribuindo

    Se você gostaria de contribuir, entre em contato com @mvsamuel ou @manicode.

    Aceitamos relatos de problemas e PRs. PRs que alteram comportamento ou adicionam funcionalidades devem incluir tanto testes positivos quanto testes negativos.

    Por favor, esteja ciente de que as contribuições estão sob a Licença Apache 2.0.

    Créditos

    Agradecemos a todos que ajudaram com críticas e código

    Baixar ferramenta