Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
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.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
svg-sanitizer — Biblioteca PHP que sanitiza SVG/XML não confiáveis filtrando tags, atributos e referências remotas para prevenir XSS e injeção de scripts em arquivos SVG enviados ou embutidos. | Kitploit
Ferramentas/GitHubGitHub/darylldoyle/svg-sanitizer
Ferramentas DefensivasAnálise EstáticaAnálise de VulnerabilidadesSegurança WebUtilitários e Frameworks
GitHubdarylldoyle/svg-sanitizer

svg-sanitizer

Biblioteca PHP que sanitiza SVG/XML não confiáveis filtrando tags, atributos e referências remotas para prevenir XSS e injeção de scripts em arquivos SVG enviados ou embutidos.

Ver Repositório
5526917há 8 diasRevisado 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

svg-sanitizer

Build Status Code Coverage

Esta é a minha tentativa de construir um sanitizador de SVG decente em PHP. O trabalho é em grande parte emprestado do DOMPurify.

Instalação

Ou requira enshrined/svg-sanitize através do composer ou baixe o repositório e inclua da forma antiga!

Uso

Usar isto é bastante fácil. Crie uma nova instância de enshrined\svgSanitize\Sanitizer e depois chame o sanitize passando o seu SVG/XML sujo

Exemplo Básico

use enshrined\svgSanitize\Sanitizer;

// Create a new sanitizer instance
$sanitizer = new Sanitizer();

// Load the dirty svg
$dirtySVG = file_get_contents('filthy.svg');

// Pass it to the sanitizer and get it back clean
$cleanSVG = $sanitizer->sanitize($dirtySVG);

// Now do what you want with your clean SVG/XML data

Saída

Isso retornará uma string SVG/XML sanitizada ou o booleano false se o parsing do XML falhar (geralmente devido a um arquivo mal formatado).

Também retorna false para entradas que não serão entregues ao parser de XML:

  • um elemento com mais de 4.096 atributos
  • um DTD interno em entrada UTF-16 ou UTF-32
  • uma codificação cuja marcação não seja ASCII simples, como EBCDIC ou UTF-7
  • uma raiz <svg> em um namespace diferente de SVG

getXmlIssues() informa o motivo.

Opções

Você pode passar sua própria lista de permissões de tags e atributos usando os métodos Sanitizer::setAllowedTags e Sanitizer::setAllowedAttrs, respectivamente.

Esses métodos exigem que você implemente enshrined\svgSanitize\data\TagInterface ou enshrined\svgSanitize\data\AttributeInterface.

<use> é permitido por padrão, com limites sobre até onde as referências podem se expandir (useThreshold()) e aninhar (setUseNestingLimit()). Se você não precisar disso, por exemplo porque insere SVG não confiável diretamente em suas páginas, deixe use fora da sua lista de tags permitidas para remover toda essa área.

Remover referências remotas

Você tem a opção de remover atributos que fazem referência a arquivos remotos; isso impedirá vazamentos HTTP, mas adicionará uma sobrecarga ao sanitizador.

O padrão é false; defina como true para remover referências.

$sanitizer->removeRemoteReferences(true);

Quando habilitado, referências remotas também são removidas do CSS dentro de elementos <style> e do CSS em atributos (url(), @import, image-set() e strings entre aspas que começam com uma URL remota). Atributos srcset são removidos por completo, pois contêm uma lista de URLs. Esse tratamento de CSS é de melhor esforço: não é um parser de CSS completo. Trate-o como defesa em profundidade, e não como garantia, e isole o CSS não confiável no ponto em que o SVG é incorporado.

Observação: se um elemento <style> ou atributo style contiver uma referência remota que seja removida, quaisquer sequências de escape de CSS nesse mesmo bloco são normalizadas (decodificadas) na saída. Trata-se de CSS semanticamente idêntico, mas reescreverá escapes escritos manualmente pelo autor.

Visualizando problemas de sanitização

Você pode usar o método getXmlIssues() para retornar um array de problemas que ocorreram durante a sanitização.

Isso pode ser útil para registro em log ou para fornecer feedback ao usuário sobre por que um SVG foi recusado.

$issues = $sanitizer->getXmlIssues();

A lista contém até 1.000 problemas. Se houver mais, a última entrada informa quantos foram omitidos.

Minificação

Você pode minificar a saída XML chamando $sanitizer->minify(true);.

Demonstração

Há uma demonstração disponível em: http://svg.enshrined.co.uk/

WordPress

Acabei de lançar um plugin para WordPress contendo este código, para que você possa sanitizar seus uploads no WordPress. Ele está disponível no diretório de plugins do WordPress: https://wordpress.org/plugins/safe-svg/

Drupal

Michael Potter gentilmente criou um módulo Drupal para esta biblioteca, disponível em: https://www.drupal.org/project/svg_sanitizer

TYPO3

Esta biblioteca de sanitização de SVG é usada por padrão no núcleo do TYPO3 v9 e versões posteriores. Consulte a entrada correspondente no changelog para mais detalhes.

Testes

Você pode executá-los rodando vendor/bin/phpunit a partir do diretório base deste pacote.

Verificação autônoma de arquivos via CLI

Graças ao trabalho de gudmdharalds, agora existe um scanner autônomo que pode ser usado via CLI.

Quaisquer erros serão exibidos no formato JSON. Veja o PR para um exemplo.

Use-o da seguinte forma: php svg-scanner.php ~/svgs/myfile.svg

A fazer

Testes mais abrangentes para os SVGs/XML seriam ótimos; tentarei adicioná-los em breve. Se você quiser fazer isso por mim, por favor faça e envie um PR!

Baixar ferramenta