Umfrage
Feedback
Victor - San An... schrieb:
I am sure I speak for everyone here when I say, THANK YOU! Your contributions have helped so many people, myself included. Believe me whe...
mehr...
©1996-2010
Michael Rosenbaum Ratzeburg - Deutschland
Anzeige
Meist gesucht
Atom Uhr Bios BIOS Boot CD I BIOS Boot CD II BIOS Boot Diskette BIOS Boot Logo BIOS Boot USB Stick BIOS EPA Logos BIOS Passwörter BIOS Pieptöne BIOS Update Anleitung Blog Captchas Spam Fütterung Feedback PC Profi gesucht ! Online Tools PiX Color Picker PixelRuler Programme
Domains
Domains zu verkaufen!
Kurze und einprägsame Domains sind sehr selten.
2cent.eu
9b9.de
pik7.net
wixxer.org
0xygen.de
0xygen.net
crocodil.net
rapidlinks.de
rapidlinks.net
rapidlinks.eu
Alle verfügbaren Domains...
Viele Webmaster, die Kontaktformulare in ihre Webseiten eingebunden haben, kennen das Problem: innerhalb kurzer Zeit erhält man darüber Spam. Grund ist, dass Spammer sogenannte Harvester (auch Webcrawler, Spider, Robot, oder kurz Bot genannt) benutzen. Dabei handelt es sich um eine spezielle Software, die automatisch das WWW durchsucht, dabei Webseiten analysiert und dann versucht gefundene Kontaktformulare automatisch mit Spam auszufüllen. Oder noch schlimmer: der Bot verändert die E-Mail-Kopfdaten, um zusätzliche E-Mail-Empfänger (BCC) einzutragen oder Anhänge an die E-Mail hinzuzufügen.
Um das zu verhindern, gibt es einiges zu beachten - was ich hier aber nur grob ansprechen kann, denn es würde normalerweise ganze Bücher füllen:
Umstellung der Versandmethode von GET auf POST:
Grund: bei der GET-Methode erscheinen sämtliche Formulardaten in der Browser-Adressleiste, die man sehr leicht abändern kann.
Beispiel:
[URL]?betreff=Hallo&text=blah&absender=info%40example.com%0ABcc:spam%40example.de
Da Mailheader durch Zeilenumbrüche getrennt werden müssen (RFC 822), fügt der Bot hinter der normalen Absenderadresse (hier in blau) einfach einen Zeilenumbruch (%0A) ein und fügt per Bcc (Blind Carbon Copy) eine, oder mehrere E-Mail-Adressen (hier in rot) als versteckte Kopie der E-Mail hinzu.
Achtung: die POST-Methode dagegen ist nicht wirklich sicherer - sie erschwert es aber!
Prüfung der Benutzereingaben (mit RegEx):
Dies ist der wichtigste Punkt von allen, denn keine mit POST übergebene Variable sollte ungeprüft weiterverarbeitet, oder sogar in eine SQL-Datenbank (Stichwort: SQL-Injection) abgespeichert, werden! Bei einem normalen Kontaktformular (wie auf dieser Seite ganz unten) müssen deshalb die Inhalte der 3 Formularfelder Name, Email und Kommentar überprüft werden. Diese Überprüfung löst man am elegantesten mit regulären Ausdrücken (RegEx) und der POSIX-Zeichenklasse z.B. in einem PHP-Skript:
Mit der PHP-Funktion setlocale() werden bei der Überprüfung auch Umlaute etc. berücksichtigt:
<?php
...
setlocale(LC_ALL, 'de_DE');
...
//Es folgt die Überprüfung
...
Name:
if (preg_match('/^[[:print:]]{5,}$/', $_POST['name'])) {echo 'alles OK';}
Erläuterung: Name muss mindestens 5 Zeichen Text ohne Umbruch enthalten.
Email:
if (preg_match('/^[^@\s]+@([-a-z0-9]+\.)+[a-z]{2,}$/i', $_POST['email'])) {echo 'alles OK';}
Erläuterung: wäre hier zu langwierig, siehe reguläre Ausdrücke
Kommentar:
if (preg_match('/^[[:print:][:space:]]{20,}$/', $_POST['kommentar'])) {echo 'alles OK';}
Erläuterung: Kommentar muss mindestens 20 Zeichen Text und kann Umbrüche enthalten.
Entschärfen von Formulardaten (HTML-Tags und Steuerzeichen):
Nicht immer ist es möglich seine Formulardaten mit regulären Ausdrücken zu prüfen. Glücklicherweise bietet PHP einige hilfreiche Funktionen an:
htmlentities() - wandelt alle geeigneten Zeichen in entsprechende HTML-Codes um.
Beispiel: aus <b>fett</b> wird <b>fett</b>
Die Funktion ist komplett identisch zu htmlspecialchars(), allerdings wandelt htmlentities() wirklich alle Zeichen, die eine HTML-Code-Entsprechung haben, in diese Entsprechung um.
htmlspecialchars() - wandelt Sonderzeichen in HTML-Codes um.
'&' (Ampersand/kaufmännisches Und) wird zu '&'.
'"' (doppeltes Anführungszeichen) wird zu '"', wenn ENT_NOQUOTES nicht gesetzt ist.
''' (einfaches Anführungszeichen) wird nur zu ''', wenn ENT_QUOTES gesetzt ist.
'<' (kleiner als) wird zu '<'
'>' (größer als) wird zu '>'
strip_tags() - entfernt HTML- und PHP-Tags aus einem String
Beispiel: aus <p>Absatz</p> wird Absatz
Entschärfen von Formulardaten (vor einer Weiterverarbeitung mit MySQL):
mysql_real_escape_string() - maskiert spezielle Zeichen innerhalb eines Strings für die Verwendung in einer MySQL-Anweisung.
Die Funktion sollte immer verwendet werden, um Daten abzusichern, bevor sie per Query an MySQL übermittelt werden!