diff --git a/src/PhpSpreadsheet/Writer/Html.php b/src/PhpSpreadsheet/Writer/Html.php
index ac14e3152..01733205e 100644
--- a/src/PhpSpreadsheet/Writer/Html.php
+++ b/src/PhpSpreadsheet/Writer/Html.php
@@ -1039,7 +1039,7 @@ class Html extends BaseWriter
}
$css['color'] = '#' . $font->getColor()->getRGB();
- $css['font-family'] = '\'' . $font->getName() . '\'';
+ $css['font-family'] = '\'' . htmlspecialchars((string) $font->getName(), ENT_QUOTES) . '\'';
$css['font-size'] = $font->getSize() . 'pt';
return $css;
diff --git a/tests/PhpSpreadsheetTests/Writer/Html/XssVulnerabilityTest.php b/tests/PhpSpreadsheetTests/Writer/Html/XssVulnerabilityTest.php
index 28716b8ad..1d8bcbb4b 100644
--- a/tests/PhpSpreadsheetTests/Writer/Html/XssVulnerabilityTest.php
+++ b/tests/PhpSpreadsheetTests/Writer/Html/XssVulnerabilityTest.php
@@ -59,4 +59,21 @@ class XssVulnerabilityTest extends Functional\AbstractFunctional
self::assertStringContainsString($expected, $verify);
$spreadsheet->disconnectWorksheets();
}
+
+ public function testXssInFontName(): void
+ {
+ $spreadsheet = new Spreadsheet();
+ $sheet = $spreadsheet->getActiveSheet();
+ $sheet->getCell('A1')->setValue('here');
+ $used = 'Calibri