Felix Riesterer: verhindern, dass Frickl script-Elemente in einem Attribut ausliest

Beitrag lesen

Lieber Julius,

Allerdings liest Frickl dummerweise script-Elemente aus, auch wenn sie sich – wie im Beispiel – in einem Attributwert befinden:

das liegt daran, dass das dahinterliegende PHP-Script mit einem relativ simplen preg_match_all operiert, anstatt einen kompletten HTML-Parser zu bemühen:

// JavaScript: <script>
if (preg_match_all(
  '~(?is)<script[^>]*>(.*?)</script>~',
  $text,
  $test
)) {
  foreach ($test[1] as $js) {
    $data['javascript'] .= $js;
  }
}

Gibt es dafür eine Lösung (script-Elemente nicht parsen, falls sie sich innerhalb eines Attribut-Werts befinden?).

Prinzipiell schon: Einen HTML-Parser bemühen.

Ich habe vorerst < und sicherheitshalber auch > escaped,

Sehr gut. Das ist momentan die sicherste Lösung.

aber eine allgemeine Lösung wäre natürlich – sofern realisierbar – vorzuziehen:

Welchen Parser empfiehlst Du, dass ich ihn in einer Extension für eine veraltete MediaWiki-Version einsetze? Aktuell habe ich etwas Erfahrung mit masterminds/html5, was mir aber gehörig überdimensioniert erscheint. Geht es nicht etwas einfacher?

Liebe Grüße,

Felix Riesterer.