Könnte eine SVG so erstellt werden, dass der Server beim Lesen von Metadaten nicht mehr reagiert. und könnte als DoS-Angriff auf den Server verwendet werden?
Was meinen Sie mit Metadaten? Wenn Sie nach Breite und Höhe suchen, müssten Sie die SVG-Dateien zumindest teilweise analysieren, um sie zu erhalten. Es gibt keine Abkürzung zum Lesen einiger Bytes aus dem Header wie bei vielen Bitmap-Formaten. Dies birgt die üblichen Risiken der XML-Analyse, z. B.:
- Angriffe auf externe Entitäten / DTD-Teilmengen gegen Remotedateien, lokale netzwerksensible Ressourcen, lokale maschinensensitive Dateien und Gerätedateien
- Erweiterungsbomben für verschachtelte Entitäten
- Pathologisch verschachtelte Tag-Strukturen können Rekursionsressourcengrenzen erreichen.
Als Standardvorkehrung würden Sie die gesamte DTD-Verarbeitung deaktivieren. XInclude-, XSL-, XSI- und Entitätsauflösung.
Könnte eine SVG so erstellt werden, dass der Client beim Rendern der SVG auf dem Client nicht mehr reagiert und möglicherweise jeden Benutzer auf meiner Website zum Browser macht Absturz?
Möglicherweise, aber es ist genauso gut möglich, dass dies mit einem Bitmap-Format passieren kann. Siehe z. B. die Sicherheitslücken in Bezug auf beschädigte PNG-Dateien vor einiger Zeit.
SVG-Dateien sind eher besorgniserregend, da sie JavaScript enthalten können, das im Sicherheitskontext der Hosting-Site ausgeführt wird. Site-Scripting, über das man sich Sorgen machen muss.
Tatsächlich sind alle Arten von hochgeladenen Dateien dafür anfällig, wenn auch nicht so direkt und einfach auszunutzen. In einigen Fällen werden sie von Browsern (insbesondere IE) inhaltsschnüffeln. Wenn sie Dinge sehen, die wie Tags aussehen, können sie sie möglicherweise als HTML, einschließlich JavaScript, neu interpretieren. Es gibt auch einige Nebenprobleme bei der Behandlung hochgeladener Dateien als Java-Applets und Flash-Richtliniendateien.
Die Standardminderung für all diese Probleme besteht darin, Ihre nicht vertrauenswürdigen Ressourcen, ob Bitmap, SVG oder irgendetwas anderes, von einer anderen Domain als Ihrer Hauptwebsite bereitzustellen: einer Domain, die keine vertraulichen Sitzungsinformationen (Cookie / Auth) enthält und keine Möglichkeit, Skripte in die Domäne Ihrer Hauptwebsite zu schreiben.
Wäre es auch empfehlenswert, ein kleines PNG (200 x 200 Pixel) für ein Miniaturbild zu generieren, oder ist es besser, nur das SVG selbst zu manipulieren mit einem Zoomfaktor oder so?
Das wäre eine nette Geste, aber Sie müssten einige Abhängigkeiten ziehen, um in Bitmap zu rendern, zum Beispiel Batik, wenn Sie Java verwenden. Das Einbringen einer neuen komplexen Bibliothek erhöht natürlich die Angriffsfläche. Es ist möglicherweise eine gute Idee, den Thumbnailer als separate Daemon-Task mit niedriger Berechtigung und niedriger Priorität auszuführen.