Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
svg-sanitizer — Libreria PHP che sanifica SVG/XML non attendibili filtrando tag, attributi e riferimenti remoti per prevenire XSS e iniezione di script nei file SVG caricati o inline. | Kitploit
Strumenti/GitHubGitHub/darylldoyle/svg-sanitizer
Strumenti DifensiviAnalisi StaticaAnalisi delle VulnerabilitàSicurezza WebUtilità e Framework
GitHubdarylldoyle/svg-sanitizer

svg-sanitizer

Libreria PHP che sanifica SVG/XML non attendibili filtrando tag, attributi e riferimenti remoti per prevenire XSS e iniezione di script nei file SVG caricati o inline.

Vedi Repository
55269178 giorni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

svg-sanitizer

Build Status Code Coverage

Questo è il mio tentativo di realizzare un discreto sanitizer per SVG in PHP. Il lavoro è in gran parte mutuato da DOMPurify.

Installazione

Puoi richiedere enshrined/svg-sanitize tramite composer oppure scaricare il repository e includerlo alla vecchia maniera!

Utilizzo

Usarlo è abbastanza semplice. Crea una nuova istanza di enshrined\svgSanitize\Sanitizer e poi chiama sanitize passando il tuo SVG/XML non sicuro

Esempio base

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

Output

Questo restituirà una stringa SVG/XML sanitizzata oppure il valore booleano false se il parsing XML non è riuscito (di solito a causa di un file malformato).

Restituisce inoltre false per gli input che non verranno passati al parser XML:

  • un elemento con più di 4.096 attributi
  • un DTD interno in input UTF-16 o UTF-32
  • una codifica il cui markup non è ASCII semplice, come EBCDIC o UTF-7
  • una radice <svg> in un namespace diverso da SVG

getXmlIssues() indica il motivo.

Opzioni

Puoi passare una tua whitelist di tag e attributi usando rispettivamente i metodi Sanitizer::setAllowedTags e Sanitizer::setAllowedAttrs.

Questi metodi richiedono che tu implementi enshrined\svgSanitize\data\TagInterface o enshrined\svgSanitize\data\AttributeInterface.

<use> è consentito per impostazione predefinita, entro limiti su quanto le referenze possono espandersi (useThreshold()) e annidarsi (setUseNestingLimit()). Se non ti serve, ad esempio perché incorpori SVG non attendibili nelle tue pagine, lascia use fuori dalla tua allowlist di tag per rimuovere l'intera area.

Rimuovere i riferimenti remoti

Hai la possibilità di rimuovere gli attributi che fanno riferimento a file remoti; questo fermerà le fughe HTTP ma aggiungerà un sovraccarico al sanitizer.

Il valore predefinito è false, impostalo a true per rimuovere i riferimenti.

$sanitizer->removeRemoteReferences(true);

Quando abilitato, i riferimenti remoti vengono rimossi anche dal CSS all'interno degli elementi <style> e dal CSS negli attributi (url(), @import, image-set() e stringhe tra virgolette che iniziano con un URL remoto). Gli attributi srcset vengono rimossi del tutto, perché contengono un elenco di URL. Questa gestione del CSS è best-effort: non è un parser CSS completo. Trattala come difesa in profondità anziché come garanzia, e isola il CSS non attendibile nel punto in cui l'SVG viene incorporato.

Nota: se un elemento <style> o un attributo style contiene un riferimento remoto che viene rimosso, eventuali sequenze di escape CSS in quello stesso blocco vengono normalizzate (decodificate) nell'output. Si tratta di CSS semanticamente identico, ma riscriverà gli escape scritti a mano da un autore.

Visualizzare i problemi di sanitizzazione

Puoi usare il metodo getXmlIssues() per ottenere un array dei problemi verificatisi durante la sanitizzazione.

Questo può essere utile per il logging o per fornire all'utente un feedback sul motivo per cui un SVG è stato rifiutato.

$issues = $sanitizer->getXmlIssues();

L'elenco contiene fino a 1.000 problemi. Se ce ne sono di più, l'ultima voce indica quanti sono stati omessi.

Minificazione

Puoi minificare l'output XML chiamando $sanitizer->minify(true);.

Demo

È disponibile una demo all'indirizzo: http://svg.enshrined.co.uk/

WordPress

Ho appena rilasciato un plugin WordPress contenente questo codice, così puoi sanitizzare i tuoi caricamenti su WordPress. È disponibile nella directory dei plugin di WordPress: https://wordpress.org/plugins/safe-svg/

Drupal

Michael Potter ha gentilmente creato un modulo Drupal per questa libreria, disponibile all'indirizzo: https://www.drupal.org/project/svg_sanitizer

TYPO3

Questa libreria di sanitizzazione SVG è utilizzata per impostazione predefinita nel core di TYPO3 v9 e versioni successive. Vedi la voce corrispondente nel changelog per maggiori dettagli.

Test

Puoi eseguirli lanciando vendor/bin/phpunit dalla directory base di questo pacchetto.

Scansione autonoma dei file tramite CLI

Grazie al lavoro di gudmdharalds ora c'è uno scanner autonomo utilizzabile tramite la CLI.

Eventuali errori verranno restituiti in formato JSON. Vedi la PR per un esempio.

Usalo come segue: php svg-scanner.php ~/svgs/myfile.svg

To-Do

Sarebbe gradito un testing più esteso per gli SVG/XML; cercherò di aggiungerlo presto. Se ti va di farlo per me, procedi pure e apri una PR!

Scarica lo strumento