Der Martin: Gästebuchproblem - bitte nur ernstgemeinte Antworten!

Beitrag lesen

Hi,

Ich benutze nicht mysql, sondern eine einfache Textdatei als Datenbank.
Ja, was in der Datenbank gelandet ist, zeige ich Dir gerne mal:
[Auflösung vorgezogen]
Also hier kommt der Meister des HTML:<br><a href="javascript:alert('bätsch');">Friede Freude Eierkuchen</a>.<br><br><a href=><div class='legend'></div></a><div class='legend'></div></fieldset>

das ist ja noch nicht weiter schädlich, könnte aber -wenn der Meister des HTML sein Produkt etwas variiert- dein Layout drumherum sprengen.

So sieht der php Code aus:

$daten="<fieldset><legend>".$_POST['name']."</legend><div id='dz'>$datum</div><br><br>".$_POST['eintrag']."<br><br><a href=".$_POST['homepage']."><div class='legend'>".$_POST['homepage']."</div></a><a href=mailto:".($_POST['email'])."><div class='legend'>".$_POST['email']=str_replace("@","~at~",$_POST['email'])."</div></a></fieldset> \n";

Uiii, ein Königreich für lesbar formatierten Quellcode!

Diese Anweisung hat für sich genommen noch keinerlei Gefahrenpotential. Sie bastelt lediglich einen String zusammen. Die Gefahr liegt darin, als was dieser String nachher interpretiert wird. Immerhin schreibst du die Parameter $_POST['name'], $_POST['eintrag'], $_POST['homepage'] und $_POST['email'] unbehandelt hinein. Heimtückische Eingaben landen also direkt in deinen Nutzdaten.

$datei = fopen(("daten.txt"),"a");
// fremden Code verhindern
      $_POST['name'] = strip_tags($_POST['name']);
      $_POST['email'] = strip_tags($_POST['email']);
      $_POST['homepage'] = strip_tags($_POST['homepage']);
      $_POST['eintrag'] = strip_tags($_POST['eintrag']);
      fwrite($datei, $daten);

Die Behandlung der $_POST-Daten hilft dir nicht wirklich, wenn du sie durchführst, *nachdem* du die bislang ungeprüften Daten schon verwendet hast. Was hilft es, mit dem schmierigen Lappen erst das Geschirr zu trocknen, und danach den Lappen zu waschen? Das Geschirr ist jedenfalls wieder verschmutzt.
Sequence does matter! ;-)

So long,
 Martin

--
Männer haben nur eine Angst: Die Angst, kein Mann zu sein.
  (Liv Tyler, US-Schauspielerin)