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
561
561
$ html .= '<ul class="navigation"> ' . PHP_EOL ;
562
562
563
563
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 ;
565
565
++$ sheetId ;
566
566
}
567
567
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