Hi,
Also habe ich den Stringteil javascript einfach verboten:
$_POST['homepage'] = str_replace("javascript","Pfui, das ist verboten", $_POST['homepage']);
Warum soll ich auf keinereli Seite mehr verweisen können, deren URL "javascript" irgendwo im Domainnamen oder Pfad-Bestandteil stehen hat?
> Aber was muss ich beim nächsten Mal im Gästebuch lesen?
>
> Genau, so einen Link:
> <a href=%6A%61%76%61%73%63%72%69%70%74:alert(%22hallo%22)>,
> und das wird ja in der Adresszeile des Browsers auch wieder zu javascript usw.
Du könntest also erst mal urldecode auf den Wert anwenden - und dann anschliessend überprüfen, ob es eine "javascript:..."-Adresse darstellt (aber bitte etwas feinfühliger als oben).
> Meine Frage:
> Gibt es dafür eine fachlich angemessenere Lösung?
Du könntest die Eingabe auch erst mal parse\_url vorwerfen - und schauen, ob dieses daraus \*sinnvolle\* Bestandteile eines URLs zu extrahieren vermag.
Bei obigem Beispiel kommt da nur ein "path"-Bestandteil bei heraus, mehr vermag parse\_url darin nicht zu erkennen - und daraus könnte man schon ein paar Schlüsse ziehen.
Das würde dir auch die vorher vorkommende Eingabe javascript:alert("hallo") so zerlegen, dass der "scheme"-Bestandteil "javascript" lautet - und darauf könnte man recht einfach prüfen, ohne wie oben angesprochen "legale" Adressen unsinngerweise abzuweisen.
MfG ChrisB
--
Light travels faster than sound - that's why most people appear bright until you hear them speak.