2k Aufrufe
Gefragt in Skripte(PHP,ASP,Perl...) von
Tag,

Ich habe mir ein Formular gebastelt (Formular.html) in dem man sein Namen eingeben kann.
Der Name der dann in einer Variable gespeichert ist, wird in der Datei Prozess.php wieder ausgegeben.

Mein Problem ist jetzt das ich man anstadt des Namens auch z.b ein html code eingeben kann - Sicherheitslücke.

Jetzt möchte ich Sowas verhindern und habe das stichwort "striptext" gehört.

Frage : Wie bau ich Striptext ein ?


Formular.html :
------------------------------------------------------------------------------------------------------------------
<html>
<head>
<title></title>
</head>
<body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000">

<h1>Formular f&uuml;r Namenseingabe</h1>
<form action="Prozess.php" method="post">
<p>Vorname:<br><input name="Vorname" type="text" size="30" maxlength="30"></p>
<p>Zuname:<br><input name="Nachname" type="text" size="30" maxlength="40"></p>

<input type="submit" value=" Absenden ">
<input type="reset" value=" Abbrechen">

</form>
</body>
</html>
------------------------------------------------------------------------------------------------------------------


Prozess.php :
------------------------------------------------------------------------------------------------------------------
<html>
<head>
<title></title>
</head>
<body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000">

<?php

echo 'Willkommen ';
echo $_POST['Vorname'];
echo '<br>';
echo $_POST['Nachname'];

?>

</body>
</html>
------------------------------------------------------------------------------------------------------------------

6 Antworten

0 Punkte
Beantwortet von Mitglied (461 Punkte)
Hi, der thml-code wird aber von dem parser verarbeitet
und dann geparst verschickt. schickst du &lt;&quot;b&quot;&gt; Name
&lt;&quot;/b&quot;&gt; weg, sollte [b]Name[/b] ankommen.
Kann auch sein, das das nur beim schreiben in eine datei
so ist. Zur not in eine Datei schreiben und diese dann
auslesen, da iat das auf jeden fall so. Oder ne durch ne
For-Schleife eine If-Abfrage schicken, welche nach
sonderzeichen sucht. Wenn welche gefunden werden,
return und Fehlermeldung ausgeben. Ansonsten, müsste
ich jetzt auch googlen.

Gruß, Tuningfuchs2000
0 Punkte
Beantwortet von Mitglied (461 Punkte)
Ach, war quatsch, die ersten drei sätze :) Anders rum, du
kannst erzwingen, das nicht geparst wird. Also würde auch
der Quellcode als Text ankommen. Musst mal nach
suchen. War recht einfach, habs nur vergessen. Z.B.
Quellcode per PHP in Textdatei speichern. Die
Sonderzeichen werden dann als Textzeichen übergeben
und nicht verarbeitet.

Gruß Tuningfuchs2000
0 Punkte
Beantwortet von
Okay ich werd es mal versuchen.

Danke für die schnelle Antwort.
0 Punkte
Beantwortet von supermax Experte (4.8k Punkte)
Die Funktion die du suchst heißt strip_tags(), in deinem Beispiel würdest du sie in der Process.php so einbauen:
<?php
echo 'Willkommen ';
echo htmlspecialchars(strip_tags($_POST['Vorname']));
echo '<br>';
echo htmlspecialchars(strip_tags($_POST['Nachname']));
?>

Der zusätzliche Aufruf von htmlspecialchars() sorgt dafür, daß die Zeichen "<" ">" und einfache und doppelte Anführungszeichen in die entsprechenden HTML-Sequenzen &lt;, &gt; und &quot; umgewandelt werden, wenn der User diese in seinem Namen eingibt.
0 Punkte
Beantwortet von Mitglied (461 Punkte)
Genau das meinte ich! :)
0 Punkte
Beantwortet von
Hat wunderbar geklapt und mein Problem gelöst ;)
Danke.
...