File tree Expand file tree Collapse file tree 2 files changed +36
-1
lines changed
src/PhpSpreadsheet/Writer
tests/PhpSpreadsheetTests/Writer/Html Expand file tree Collapse file tree 2 files changed +36
-1
lines changed Original file line number Diff line number Diff line change @@ -561,7 +561,7 @@ public function generateNavigation(): string
561561 $ html .= '<ul class="navigation"> ' . PHP_EOL ;
562562
563563 foreach ($ sheets as $ sheet ) {
564- $ html .= ' <li class="sheet ' . $ sheetId . '"><a href="#sheet ' . $ sheetId . '"> ' . $ sheet ->getTitle () . '</a></li> ' . PHP_EOL ;
564+ $ html .= ' <li class="sheet ' . $ sheetId . '"><a href="#sheet ' . $ sheetId . '"> ' . htmlspecialchars ( $ sheet ->getTitle () ) . '</a></li> ' . PHP_EOL ;
565565 ++$ sheetId ;
566566 }
567567
Original file line number Diff line number Diff line change 1+ <?php
2+
3+ declare (strict_types=1 );
4+
5+ namespace PhpOffice \PhpSpreadsheetTests \Writer \Html ;
6+
7+ use PhpOffice \PhpSpreadsheet \Spreadsheet ;
8+ use PhpOffice \PhpSpreadsheet \Writer \Html as HtmlWriter ;
9+ use PHPUnit \Framework \TestCase ;
10+
11+ class NavigationBadTitleTest extends TestCase
12+ {
13+ public function testNavigationTitle (): void
14+ {
15+ $ spreadsheet = new Spreadsheet ();
16+ $ sheet = $ spreadsheet ->getActiveSheet ();
17+ $ sheet ->getCell ('A1 ' )->setValue (1 );
18+ $ sheet2 = $ spreadsheet ->createSheet ();
19+ $ sheet2 ->setTitle ('<img src=x onerror=alert(1)> ' );
20+ $ sheet2 ->getCell ('A2 ' )->setValue (2 );
21+
22+ $ writer = new HtmlWriter ($ spreadsheet );
23+ $ writer ->writeAllSheets ();
24+ $ html = $ writer ->generateHTMLAll ();
25+ $ expected = '<ul class="navigation"> '
26+ . PHP_EOL
27+ . ' <li class="sheet0"><a href="#sheet0">Worksheet</a></li> '
28+ . PHP_EOL
29+ . ' <li class="sheet1"><a href="#sheet1"><img src=x onerror=alert(1)></a></li> '
30+ . PHP_EOL
31+ . '</ul> ' ;
32+ self ::assertStringContainsString ($ expected , $ html , 'appropriate characters are escaped ' );
33+ $ spreadsheet ->disconnectWorksheets ();
34+ }
35+ }
You can’t perform that action at this time.
0 commit comments