Sven Rautenberg: String erkennenen, egal welche Schreibweise?

Beitrag lesen

Moin!

Ich programmiere eine Wortfilterfunktion die bei Posts in ein Gästebuch, Forum etc. die aus einer Datenbank oder TXT-Datei gespeicherten Schimpfworte mit Sternchen zensiert.

Ich glaube kaum, dass dein Mechanismus genügend Intelligenz besitzt, um Schimpfworte zu erkennen und zu zensieren.

Zunächst mal: Warum willst du automatisch zensieren? Das macht die zensierten Beiträge nicht besser, du wirst ohnehin manuell darüber wachen müssen, welche Einträge reinkommen.

Zweitens wirst du es kaum schaffen, alle möglichen Variationsmöglichkeiten eines Wortes zu erfassen.

"Idiot" (ein wirklich harmloser Begriff) läßt sich, in groß und klein, sicherlich leicht erkennen und filtern.

Was aber ist mit "IDI0T"? Die Null sieht doch fast aus wie ein O, fällt also garnicht auf, ist aber für den Computer ein ganz anderes Wort.

Oder was wäre mit "IDI*T" - also vorweggenommene Zensur. Das Sternchen ist sicherlich auch noch als O wahrnehmbar, aber genau wie bei der Null (bei der man sich ja noch überlegen könnte, sie in ein O umzuwandeln und dann nochmal zu prüfen) ist es ein anderes Wort als "IDIOT".

Was ist mit "I D I O T"? Die Leerzeichen zwischen den Buchstaben kannst du natürlich wegnehmen, aber woran erkennst du, dass ein Leerzeichen nur zum Auseinanderhalten von bösen Buchstaben gedacht ist, und woran, dass das Leerzeichen wirklich zwei Wörter trennt? Hm, du meinst, Einzelbuchstaben wären verdächtig? Dann schreibe ich "I DI OT" oder "I-DI-OT".

Oder nehmen wir 1337-spe4k. "||>|0T" ist ja nun wirklich kaum noch erkennbar, aber immer noch ein "Idiot".

Und was ist, wenn ein Besucher ganz legitim ein freundliches Posting über Dostojewskis "Der Idiot" schreiben will? Das wird dann auch zensiert, und die Diskussion geht dann über "Der ***" - und wenn die Hälfte der Teilnehmer dann daraus "Der 3-Sterne-General" herausliest, ist das irgendwie blöd.

Solche Wortfilter sind in genau einem Punkt sinnvoll: Wenn es darum geht, das Gästebuch oder Forum vor böswilligen Script-Attacken zu schützen. Wenn HTML nicht als Quelltext ausgegeben wird, sondern 1:1 an den Browser des Lesers gesendet wird, kann man nicht nur mit <b> Fettschrift einstellen, sondern auch Javascript einbauen, welches z.B. massenhaft Popups öffnet oder auf eine Werbeseite weiterleitet. Oder noch ganz andere schlimme Dinge tut, die auf den ersten Blick gar nicht weiter auffallen - beispielsweise könnte man alle (oder einige) Links der Seite verändern und auf einen Server des Angreifers zeigen lassen. Dort ist dann eine grafisch identische Version hinterlegt, und auch ein Login-Feld. Die Login-Daten werden dann natürlich an den falschen Server gesendet.

Es ist also besser, entweder garkein HTML zuzulassen, oder eben nur bestimmte Sachen, während die anderen Sachen rausgefiltert werden. Und bei Javascript-Code ist es eben nicht egal, ob man "script" oder "scr1pt" schreibt.

- Sven Rautenberg

--
ss:) zu:) ls:[ fo:} de:] va:) ch:] sh:) n4:# rl:| br:< js:| ie:( fl:( mo:|