[Tutorial] Kontaktformular erstellen [5 / 7]Sie befinden sich: Home > Webmaster News
In diesem Teil wollen wir uns kurz mit dem Thema Sicherheit beschäftigen.
Grundsätzlich müssen Sie allen Eingaben, die von Usern kommen, misstrauen. Grade Kontaktformulare, bei denen ja zuletzt eine Email ausgesandt wird, sind besonders beliebte Ziele von Spammern. Wenn man die eingegebenen Daten ungeprüft weiterverarbeitet, so kann es sehr schnell passieren, dass ein Angreifer über Ihren Server massenweise Spams verschickt. Wir können daher unser Script so, wie es jetzt da steht nicht lassen, sondern müssen die drei Eingaben prüfen.
Wir können mit der Funktion strip_tags eingegebene HTML-Befehle entschärfen. Im Code sieht das dann so aus: $name=strip_tags($name) - und ähnliches müssten wir auch für alle anderen Eingabefelder schreiben. Dazu später mehr.
Manchmal werden auch führende oder sich anschließende Leerzeichen eingegeben, die wir nicht haben möchten, und die wir mit trim() abschneiden müssen. Weiter müssen wir uns darum kümmern, dass eingegebene Hochkommas und Doppelhochkommas und sonstige Sonderzeichen nicht automatisch escaped werden. Wenn auf Ihrem Server nämlich in der php.ini die sog. magic quotes aktiviert sind, dann macht PHP vor jedes eingegebene Hochkomma automatisch einen Backslash. Aus ' wird dann ' usw. Ob magic quotes eingeschaltet sind verrät uns get_magic_quotes_gpc().
Wir können nun alles benötige zusammen in eine kleine praktische Funktion schreiben:
<?php
function eingabe($var) {
$was = $_POST[$var];
$was = trim($was);
$was = strip_tags($was);
if(get_magic_quotes_gpc()) {
$was = stripslashes($was);
}
return $was;
}
?>
Statt $name = $_POST['name']; schreiben wir nun $name = eingabe('name'). Hier der aktuelle Code:
<?php
function eingabe($var) {
$was = $_POST[$var];
$was = trim($was);
$was = strip_tags($was);
if(get_magic_quotes_gpc()) {
$was = stripslashes($was);
}
return $was;
}
$hinweis = "Bitte füllen Sie alle Felder aus und klicken Sie dann auf Absenden";
if (!empty($_POST['senden'])) {
// Formular wurde abgeschickt
$name = eingabe('name');
$email = eingabe('email');
$nachricht = eingabe('nachricht');
}
?>
Geben Sie probeweise
abc<b>def
ein. Dies wird nach dem Absenden des Formulars zu abcdef,
<script>alert 'CSS' </script>
wird zum harmlosen alert 'CSS' und die einfachen Hochkommas erhalten keinen Backslash.
Sobald alle Daten bereit sind zur weiteren Verarbeitung werden wir noch solche Sonderzeichen entschärfen, die zum Teil von eingeschleusten Befehlen werden können.
Teile dieses Tutorials: -1- -2- -3- -4- -5- -6- -7-
(Autor: Wolfgang), Eingetragen am 08.07.2008
Schreib ein Kommentar
|