diff --git a/composer.json b/composer.json
index e323f54eb..6d7597aa2 100644
--- a/composer.json
+++ b/composer.json
@@ -37,6 +37,7 @@
"assetic/framework": "~3.0",
"doctrine/dbal": "^2.6",
+ "enshrined/svg-sanitize": "^0.15",
"erusev/parsedown-extra": "~0.7",
"laravel/framework": "^9.1",
"laravel/tinker": "^2.7",
diff --git a/src/Foundation/Bootstrap/RegisterWinter.php b/src/Foundation/Bootstrap/RegisterWinter.php
index c9ff12699..073597b83 100644
--- a/src/Foundation/Bootstrap/RegisterWinter.php
+++ b/src/Foundation/Bootstrap/RegisterWinter.php
@@ -25,6 +25,9 @@ public function bootstrap(Application $app): void
$app->singleton('string', function () {
return new \Winter\Storm\Support\Str;
});
+ $app->singleton('svg', function () {
+ return new \Winter\Storm\Support\Svg;
+ });
/*
* Change paths based on config
diff --git a/src/Support/Facades/Svg.php b/src/Support/Facades/Svg.php
new file mode 100644
index 000000000..c6e97a49e
--- /dev/null
+++ b/src/Support/Facades/Svg.php
@@ -0,0 +1,21 @@
+removeRemoteReferences(true);
+ $sanitizer->removeXMLTag(true);
+
+ if ($minify) {
+ $sanitizer->minify(true);
+ }
+
+ return trim($sanitizer->sanitize($svg));
+ }
+}
diff --git a/tests/Support/SvgTest.php b/tests/Support/SvgTest.php
new file mode 100644
index 000000000..7bc723271
--- /dev/null
+++ b/tests/Support/SvgTest.php
@@ -0,0 +1,22 @@
+assertEquals($fixture, $svg);
+ }
+
+ public function testDirtySvg()
+ {
+ $svg = Svg::extract(dirname(__DIR__) . '/fixtures/svg/winter-dirty.svg');
+ $fixture = trim(file_get_contents(dirname(__DIR__) . '/fixtures/svg/extracted/winter-dirty.svg'));
+
+ $this->assertEquals($fixture, $svg);
+ }
+}
diff --git a/tests/fixtures/svg/extracted/winter-dirty.svg b/tests/fixtures/svg/extracted/winter-dirty.svg
new file mode 100644
index 000000000..31a09caba
--- /dev/null
+++ b/tests/fixtures/svg/extracted/winter-dirty.svg
@@ -0,0 +1 @@
+
diff --git a/tests/fixtures/svg/extracted/winter.svg b/tests/fixtures/svg/extracted/winter.svg
new file mode 100644
index 000000000..6386f7eb1
--- /dev/null
+++ b/tests/fixtures/svg/extracted/winter.svg
@@ -0,0 +1 @@
+
diff --git a/tests/fixtures/svg/winter-dirty.svg b/tests/fixtures/svg/winter-dirty.svg
new file mode 100644
index 000000000..55656a44c
--- /dev/null
+++ b/tests/fixtures/svg/winter-dirty.svg
@@ -0,0 +1,59 @@
+
+
diff --git a/tests/fixtures/svg/winter.svg b/tests/fixtures/svg/winter.svg
new file mode 100644
index 000000000..6c7ddced0
--- /dev/null
+++ b/tests/fixtures/svg/winter.svg
@@ -0,0 +1,56 @@
+
+