Was können Sie tun
- Verwenden Sie für normale Formularverarbeitung am besten unser Formularscript.
- Für Newslettersysteme verwenden Sie unser Mailinglistensystem.
- Einsetzen eines Captchas
Sofern Sie andere Mailanwendungen haben oder Ihr eigenes Script verwenden möchten, dann achten Sie auf folgende Punkte.
Referenz mail-Befehl:
mail($to, $subject, $message, $header, $param)
Gefährlich sind hier vor allem $to, $subject und $header !
- $to: Verwenden Sie hier falls möglich NIE Variabeln welche Sie von extern via POST übernehmen! Verwenden Sie als $to wenn möglich eine bei NetZone eingerichtete EMail-Adresse. Falls Sie das anhand der Funktionsweise des Script das $to dynamisch setzen müssen, dann müssen Sie explizit prüfen ob es eine gültige EMail-Adresse ist. Entfernen Sie allfällige \r oder \n in dieser Variable und beschränken Sie die Variable auf eine vernünftige maximale Länge (z.B. 40 Zeichen), z.b. mit substr()-Befehl
- $subject: Keine externen Daten via POST übernehmen und Entfernen Sie hier ebenfalls alle \r und \n (= Zeilenumbruch und Carriage Return). Beschränken Sie die Variable auf eine vernünftige Maximallänge
- $header: Verzichten Sie hier wie bei $to auf die Verwendung von externen Variabeln und falls Sie diese doch benötigen (z.B. für Angabe von from) dann entfernen Sie alle \r \n vorher aus diesen Variabeln. Beschränken Sie die Variablen auf eine vernünftige Maximallänge
Sofern Sie dies nicht tun, kann ein Spammer mehrere tausend E-Mail Adressen einschleusen und unter Ihrem Namen Spam und Viren versenden!
Sie sollten Ihr Script also Ihren Bedürfnissen exakt anpassen und entsprechend absichern.
Als Notlösung haben wir einen eigenen mail-Befehl zur Verfügung entwickelt, welcher viele Sicherheitslücken schliesst. Er ist bedeutend sicherer als der normale mail-Befehl von PHP aber natürlich nie so gut wie ein entsprechend angepasstes Script.
Die Parameter sind identisch mit denjenigen des normalen PHP-Befehls.
include_once('/home/httpd/php/netzonemail.php');
netzonemail($to,$subject,$message,[$header[,$param]]);
Schutz durch Captcha
Um das automatische Ausfüllen, und damit auch den Missbrauch, von Ihren Scripten zu verhindern, können Sie ein Captcha einsetzen. Dieses stellt sicher, dass nur ein Mensch und kein Robot das Formular absenden kann. Um das Captcha einzusetzen, muss auf der HTML Seite das Captcha mit folgendem HTML Code integriert werden:
<img name='captcha' id='captcha' src='/cgi-bin/captcha.php?action=pic'>
<br>
<div style="text-decoration: underline;" OnClick="javascript:var datum = new Date();
document.getElementById('captcha').src='/cgi-bin/captcha.php?action=pic&rnd=' +
Date.UTC(datum.getFullYear(), datum.getMonth(), datum.getDate(), datum.getHours(),
datum.getMinutes(), datum.getSeconds() ) +
datum.getMilliseconds();">Neues Bild / Reload</div><br>
Bitte obenstehenden, fünfstelligen Buchstabencode eingeben
<br><input type='text' name='captcha'>
Anschliessend können Sie in Ihren Scripten die Korrektheit der Usereingabe überprüfen. Ein Beispiel hierfür wäre:
if( strtoupper($_REQUEST['captcha']) != $_SESSION['bild']->captcha_value ){
// Captcha inkorrekt, Verarbeitung abbrechen.
} else {
// Captcha korrekt, weiterverarbeiten des Scriptes
}
