GeSHi bietet die Möglichkeit die Styles, mit denen Dinge hervorgehoben werden, zu verändern. Also diese ganzen set_*_style-Methoden. Wenn der Anwender die Möglichkeit hat, diesen eigene Inhalte zu übergeben, so kann er dort beliebige Dinge mit tun; im Falle einer
DB als Datenquelle also auch ein derart präparierten Source speichern, der dann von anderen Anwendern aufgerufen wird.
Vermieden werden kann dies, indem man bevor man benutzerdefiniertes CSS an GESHi übergibt, dieses bereits entsprechend filtert.
Beispiel:
Code:
$G->set_strings_style('\'><SCRIPT>alert("xss");</SCRIPT><br lang=\'', false);
Wobei halt '\'><SCRIPT>alert("xss");</SCRIPT>' ein vom Benutzer frei wählbarer String ist.