wie André schon schrieb, ist es fast unmöglich, auf "<applet" zu filtern. Hier ein paar Beispiele (ob sie tatsächlich funktionieren, habe ich jetzt nicht geprüft)
mit
<script type="text/javascript">document.write("<ap" + "plet>....</ap"+"plet>")</script>
wäre dein Filter schon umgangen.
... dann kommt dein Argument, dass du halt dann noch auf "script" filterst.
... hast du auch ein "<img onload='document.write(...)'>" bedacht.
... dann filterst du noch auf "onload"
... obiges funktioniert auch noch (bedingt) mit onmouseover, onmouseout, ...
... dann filterst du nach "document.write" => "var d = document; d.write(....)" macht das Gleiche
... wenn du auf das auch noch alles gefiltert hast, dann lies auch nochmal das: [edit]link vorsichtshalber entfernt[/edit]
Hier ist meine Kreativität dann nun doch langsam am Ende, aber ich hoffe, es zeigt dir, dass dein Filter nicht wirklich filtert, da du nicht alle Eventualitäten berücksichtigen kannst
Am Entwicklercamp war ein interessanter Vortrag über genau das Thema:
http://www.entwicklercamp.de/EC13/Track4Session4Was aber ein Ansatz sein könnte, die "<" komplett zu entfernen. Wenn man Seite 11 aber gelesen hat, wird man hier auch wieder zweifeln.
Gruß
Roland