ChrisB: Gästebuchproblem - er macht es schon wieder

Beitrag lesen

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.