Immer wieder höre ich in Webentwickler-Kreisen Diskussionen über SVGs («Scalable Vector Graphic»). Diesem Dateiformat wird gemeinhin unterstellt, «unsicher» zu sein. Oftmals werden sie systematisch verteufelt. Dabei sind gar nicht alle SVGs böse.
Stammen sie aus vertrauenswürdiger Quelle, ist ihre Verwendung nicht gefährlicher als der Einsatz von HTML. Es ist ähnlich wie mit den Statistiken: Vertraue keiner SVG, die du nicht selbst erstellt hast.
Was ist so toll an SVGs?
.svg ist wie .jpg, .png und .gif ein Grafikformat, welches jeder Browser darstellen kann. Im Unterschied zu den eben genannten Formaten können SVGs jedoch mit Vektoren umgehen. Eigentlich eine coole Sache – sie erscheinen in jeglicher Grösse und auf jedem Display immer gestochen scharf – und das bei minimaler Dateigrösse.
Was kratzt denn am Image der Scalable Vector Graphic?
Eine «Scalable Vector Graphic» ist nicht eine «reine» Bilddatei wie ein .jpg oder .png, sondern basiert auf der Sprache XML. Das bedeutet, dass wir SVGs als Text in den Quellcode schreiben können und der Browser sie dann als Bild anzeigt. Analog zu HTML-Files können wir auch SVG-Code mit CSS und JavaScript ergänzen. Damit wird’s richtig cool: Interaktivität ahoi! Und damit wird’s auch richtig gefährlich.
Gesunder Menschenverstand ist wichtig
Laden wir also irgendwo ein x-beliebiges SVG aus dem Internet, haben wir zunächst einmal keine Ahnung, was genau in dieser Datei abgeht. Salopp gesagt können wir das SVG als roten Kreis auf unserem Bildschirm sehen, während im Hintergrund gerade ein Virus geladen wird. Das gibt natürlich der sprichwörtlichen Alarmglocke, die das Wort «SVG» auslöst, absolute Berechtigung.
Der beste Weg, ganz sicher zu sein, dass eine SVG «harmlos» ist, wäre also, die Datei von A bis Z selbst zu erstellen. Natürlich gibt es immer wieder Fälle, in denen man so eine Grafik aus einer externen Quelle bezieht. In diesem Fall macht es angesichts der Risiken Sinn, die Datei genau zu prüfen. Das ist ist meistens gar nicht so schwierig. SVG-Code ist grundsätzlich nichts Kompliziertes. Grundsätzlich 🙂
Es gilt also: Wenn ich weiss, was ich tue, ist die Verwendung von SVGs überhaupt kein Problem.
Über mich
Eidg. dipl. Kommunikationsdesignerin, GL bei schmizz communicate 360°, Co-Gründerin von ProDemenz, Projektleiterin Content beim publishing.club. Passionierte Fotografin, YOOtheme- und ClickUp-Expertin. Immer auf der Suche nach neuen Wegen zur perfekten Work-Life-Blend 😎
3 Antworten
Das klingt für mich ehrlich gesagt nach einer Mediengestalter-Verschwörungstheorie. Ja, SVG-Dateien können JavaScript enthalten. Ja, das wird im Browser ausgeführt. Und wo ist der Unterschied zu buchstäblich jedem anderen Stück JavaScript, das im Browser ausgeführt wird?
Jeder Browser hat eine jahrzehntelang gewachsene Sicherheitsinfrastruktur, die _jegliches_ ausgeührte JavaScript sowieso prüft. Es gibt im wesentlichen drei Dinge, die passieren können:
1) Direktes Ausführen von Malware von einer beliebigen URL (z.B. Laden einer .exe unter Windows)
2) Cross-Site-Scripting (XSS)
3) Cross-Site Request Forgery (CSRF)
Punkt 1 wird in der Praxis dadurch abgewehrt, dass erstens Browser seit ca. 10 Jahren in einer Sandbox laufen und zweitens jeder Windows-Benutzer Ausführungsschutz für Executables hat (und sei es Windows Security). Dazu gab es seit Jahren keine Fälle in der echten Welt.
Punkte 2 und 3 sind, ebenfalls seit Jahrzehnten, im Fokus der Browserentwickler. Da gibt’s immer mal wieder neue Vulnerabilites, die in der Regel innerhalb weniger Stunden gefixt werden. Wenn sowas auftritt, dann sicherlich nicht via SVG, sondern über Code Injection aus Botnetzen oder Advertising Networks, die gelieferten Code für Werbeplätze nicht vernünftig oder gar nicht checken.
Die Wahrscheinlichkeit ist also _wesentlich_ höher, beim Browsen auf Portalen wie Bing oder “seriösen” Nachrichtenwebsites auf XSS oder CSRF zu stoßen. Die Gefahr von SVG hingegen ist verschwindend gering.
Viel spannender ist die Frage, ob nicht Sicherheitslücken in Illustrator existieren, die man per JavaScript ausnutzen könnte. Die Adobe-Produkte sind in puncto Sicherheit nicht für ihre Exzellenz bekannt, und haben eine JavaScript-API zur Automatisierung. _Wenn_ SVG ein Sicherheitsrisiko ist, dann viel eher hier als im Browser. Ich bin mir ziemlich sicher, wenn jemand mal ein bisschen rumbohrt, findet er einen Weg, ausführbare Dateien auf den Rechner zu schmuggeln.
Herzlichen Dank für die technischen Ausführungen – noch mehr gute Argumente, wenn die Diskussion das nächste Mal auftaucht!
SVGs sind doch transparent, da kann man doch selbst nachschauen ob da „unnötige“ Links enthalten sind.
Links in Kommentaren sind ungefährlich.
Da wäre interessant in welchen Bereichen Links sonst noch nicht ausgeführt werden können. Gibt es Links die erforderlich sind?