@@ -8,6 +8,10 @@ document.addEventListener('DOMContentLoaded', function(event) {
88 filtersCount : document . getElementById ( 'filters-count' ) . getElementsByTagName ( 'span' ) [ 0 ]
99 } ;
1010 const slugify = ( value ) => value . toLowerCase ( ) . replace ( / [ ^ a - z 0 - 9 - ] / g, '' ) . replace ( / \s + / g, '-' ) . replace ( / - + / g, '-' ) ;
11+ const escapeHTML = ( string ) => {
12+ const map = { '&' : '&' , '<' : '<' , '>' : '>' , '"' : '"' , "'" : ''' } ;
13+ return string . replace ( / [ & < > " ' ] / g, function ( m ) { return map [ m ] ; } ) ;
14+ } ;
1115 const sort = ( list ) => {
1216 signatures = list . getElementsByTagName ( "li" ) ;
1317 Array . from ( signatures )
@@ -70,9 +74,9 @@ document.addEventListener('DOMContentLoaded', function(event) {
7074 row . classList . add ( 'log' , sigId ) ;
7175 row . id = eventId ;
7276 row . insertCell ( 0 ) . innerHTML = `<td class="date"><span class="datetime" title="${ new Date ( ) . toLocaleString } ">${ new Date ( ) . toLocaleTimeString ( ) } </span></td>` ;
73- row . insertCell ( 1 ) . innerHTML = `<td class="category-name"><strong>${ data . category } </strong></td>` ;
77+ row . insertCell ( 1 ) . innerHTML = `<td class="category-name"><strong>${ escapeHTML ( data . category ) } </strong></td>` ;
7478 row . insertCell ( 2 ) . innerHTML = `<td class="element"><div>${ data . element } </pre></div></td>` ;
75- row . insertCell ( 3 ) . innerHTML = `<td class="matches"><strong>${ data [ data . element ] } </strong></td>` ;
79+ row . insertCell ( 3 ) . innerHTML = `<td class="matches"><strong>${ escapeHTML ( data [ data . element ] ) } </strong></td>` ;
7680 row . insertCell ( 4 ) . innerHTML = `<td class="log-line"><div><pre>${ JSON . stringify ( data ) } </pre></div></td>` ;
7781 settings . matchesCount . textContent = `${ document . getElementsByClassName ( 'log' ) . length } threats` ;
7882
@@ -103,7 +107,7 @@ document.addEventListener('DOMContentLoaded', function(event) {
103107 const createSignature = ( name ) => {
104108 var li = document . createElement ( 'li' ) ;
105109 li . id = slugify ( name )
106- li . innerHTML = `<a href="#" class="menu-item" title="${ name } ">${ name } </a>` ;
110+ li . innerHTML = `<a href="#" class="menu-item" title="${ escapeHTML ( name ) } ">${ escapeHTML ( name ) } </a>` ;
107111 li . addEventListener ( 'click' , ( e ) => {
108112 e . preventDefault ( ) ;
109113 filterSignature ( li ) ;
0 commit comments