Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
svg-sanitizer — PHP-Bibliothek, die nicht vertrauenswürdige SVG/XML-Dateien bereinigt, indem sie Tags, Attribute und Remote-Referenzen filtert, um XSS und Skript-Injection in hochgeladenen oder inline eingebetteten SVG-Dateien zu verhindern. | Kitploit
Tools/GitHubGitHub/darylldoyle/svg-sanitizer
DefensivwerkzeugeStatische AnalyseSchwachstellenanalyseWebsicherheitDienstprogramme & Frameworks
GitHubdarylldoyle/svg-sanitizer

svg-sanitizer

PHP-Bibliothek, die nicht vertrauenswürdige SVG/XML-Dateien bereinigt, indem sie Tags, Attribute und Remote-Referenzen filtert, um XSS und Skript-Injection in hochgeladenen oder inline eingebetteten SVG-Dateien zu verhindern.

Repository anzeigen
5526917vor 8 TagenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

svg-sanitizer

Build-Status Code-Abdeckung

Dies ist mein Versuch, einen brauchbaren SVG-Sanitizer in PHP zu erstellen. Die Arbeit ist größtenteils von DOMPurify übernommen.

Installation

Entweder enshrined/svg-sanitize über Composer einbinden oder das Repository herunterladen und auf die altmodische Weise einbinden!

Verwendung

Die Verwendung ist recht einfach. Erstellen Sie eine neue Instanz von enshrined\svgSanitize\Sanitizer und rufen Sie dann sanitize auf, während Sie Ihr unsauberes SVG/XML übergeben.

Einfaches Beispiel

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

Ausgabe

Dies gibt entweder einen bereinigten SVG/XML-String oder den booleschen Wert false zurück, wenn die XML-Analyse fehlgeschlagen ist (normalerweise aufgrund einer schlecht formatierten Datei).

Es gibt auch false für Eingaben zurück, die nicht an den XML-Parser weitergegeben werden:

  • ein Element mit mehr als 4.096 Attributen
  • eine interne DTD in UTF-16- oder UTF-32-Eingaben
  • eine Kodierung, deren Markup nicht reines ASCII ist, wie etwa EBCDIC oder UTF-7
  • ein <svg>-Wurzelelement in einem anderen Namespace als SVG

getXmlIssues() gibt den Grund an.

Optionen

Sie können Ihre eigene Whitelist von Tags und Attributen übergeben, indem Sie die Methoden Sanitizer::setAllowedTags bzw. Sanitizer::setAllowedAttrs verwenden.

Diese Methoden erfordern, dass Sie das enshrined\svgSanitize\data\TagInterface oder enshrined\svgSanitize\data\AttributeInterface implementieren.

<use> ist standardmäßig erlaubt, jedoch mit Begrenzungen dafür, wie weit Referenzen expandieren (useThreshold()) und verschachteln (setUseNestingLimit()) können. Wenn Sie es nicht benötigen, beispielsweise weil Sie nicht vertrauenswürdiges SVG in Ihre Seiten einbetten, lassen Sie use aus Ihrer Tag-Allowlist weg, um diesen gesamten Bereich zu entfernen.

Entfernen von Remote-Referenzen

Sie haben die Möglichkeit, Attribute zu entfernen, die auf entfernte Dateien verweisen. Dies stoppt HTTP-Leaks, verursacht jedoch einen zusätzlichen Overhead für den Sanitizer.

Dies ist standardmäßig auf false gesetzt; setzen Sie es auf true, um Referenzen zu entfernen.

$sanitizer->removeRemoteReferences(true);

Wenn aktiviert, werden Remote-Referenzen auch aus CSS innerhalb von <style>-Elementen und aus CSS in Attributen entfernt (url(), @import, image-set() und Zeichenketten in Anführungszeichen, die mit einer Remote-URL beginnen). srcset-Attribute werden vollständig entfernt, da sie eine Liste von URLs enthalten. Diese CSS-Behandlung erfolgt nach bestem Bemühen: Es handelt sich nicht um einen vollständigen CSS-Parser. Betrachten Sie sie als Defense-in-Depth und nicht als Garantie, und isolieren Sie nicht vertrauenswürdiges CSS an der Stelle, an der das SVG eingebettet wird.

Hinweis: Wenn ein <style>-Element oder ein style-Attribut eine Remote-Referenz enthält, die entfernt wird, werden alle CSS-Escape-Sequenzen in demselben Block in der Ausgabe normalisiert (dekodiert). Dies ist semantisch identisches CSS, schreibt jedoch Escapes um, die ein Autor von Hand geschrieben hat.

Anzeigen von Sanitization-Problemen

Sie können die Methode getXmlIssues() verwenden, um ein Array von Problemen zurückzugeben, die während der Sanitization aufgetreten sind.

Dies kann nützlich sein für die Protokollierung oder um dem Benutzer Feedback dazu zu geben, warum ein SVG abgelehnt wurde.

$issues = $sanitizer->getXmlIssues();

Die Liste enthält bis zu 1.000 Probleme. Wenn es mehr gibt, gibt der letzte Eintrag an, wie viele ausgelassen wurden.

Minifizierung

Sie können die XML-Ausgabe minifizieren, indem Sie $sanitizer->minify(true); aufrufen.

Demo

Eine Demo ist verfügbar unter: http://svg.enshrined.co.uk/

WordPress

Ich habe gerade ein WordPress-Plugin mit diesem Code veröffentlicht, damit Sie Ihre WordPress-Uploads bereinigen können. Es ist im WordPress-Plugin-Verzeichnis verfügbar: https://wordpress.org/plugins/safe-svg/

Drupal

Michael Potter hat freundlicherweise ein Drupal-Modul für diese Bibliothek erstellt, das unter folgender Adresse verfügbar ist: https://www.drupal.org/project/svg_sanitizer

TYPO3

Diese SVG-Sanitizer-Bibliothek wird standardmäßig im Kern von TYPO3 v9 und späteren Versionen verwendet. Weitere Details finden Sie im entsprechenden Changelog-Eintrag.

Tests

Sie können diese ausführen, indem Sie vendor/bin/phpunit aus dem Basisverzeichnis dieses Pakets ausführen.

Eigenständiges Scannen von Dateien über die CLI

Dank der Arbeit von gudmdharalds gibt es jetzt einen eigenständigen Scanner, der über die CLI verwendet werden kann.

Alle Fehler werden im JSON-Format ausgegeben. Ein Beispiel finden Sie im PR.

Verwenden Sie ihn wie folgt: php svg-scanner.php ~/svgs/myfile.svg

To-Do

Umfangreichere Tests für die SVGs/XML wären wunderbar; ich werde versuchen, diese bald hinzuzufügen. Wenn Sie Lust haben, das für mich zu erledigen, tun Sie es bitte und erstellen Sie einen PR!

Tool herunterladen