Thread Sicherheit der mailer.php: Warum kommen fast leere mails an? (9 answers)
Opened by Pida at 2007-03-31 00:39

Pida
 2007-03-31 00:39
#9975 #9975
User since
2006-06-09
52 Artikel
BenutzerIn
[default_avatar]
UPDATE: Das ursprüngliche Problem ist gelöst, indem ich Aufrufe per GET ablehne. In einem neuen Post unten habe ich aber ein weiteres Problem mit SPAM beschrieben.
-----
Hallo,

ich habe eine Frage zur Sicherheit des Kontaktformulars meiner Homepage. Unten seht ihr den PHP-Teil meiner mailer.php, die bei Senden des Formulars aufgerufen wird.
Ich habe einiges aus diversen Foren und Tutorials zusammengetragen, so dass eigentlich keine mail injections möglich sein sollten.
Was mich aber irritiert: Gelegentlich kommen mails bei mir an, die außer den festen Bestandteilen von $text keinen Inhalt haben.

Ist das ein Grund zur Sorge? Ich überprüfe mit Absicht nicht die Vollständigkeit und Art der Angaben; wer statt der eMail seine Telefonnummer angeben möchte, soll das ruhig tun.

Hier nun der Code:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?php

if ($_SERVER['REQUEST_METHOD'] == 'GET') die ("Bitte das Kontaktformular benutzen! Es wurden keine Daten &uuml;bermittelt.");

// Tags entfernen, @ und / umwandeln
foreach($_POST as $key=>$value) $_POST[$key]=(strip_tags($value));
foreach($_POST as $key=>$value) $_POST[$key]=(str_replace("/","SLASH",$value));
foreach($_POST as $key=>$value) $_POST[$key]=(str_replace("@","BEI",$value));


$sender = $_POST["sender"];
$sendermail = $_POST["sendermail"];
$newsletter = $_POST["newsletter"];
$betreff = "Newsletter";


// Auf Längenüberschreitungen prüfen
if (strlen($sender) > 60 || strlen($sendermail) > 60) {
die("ACHTUNG: Name und Mailadresse dürfen 60 Zeichen nicht überschreiten.");
}


// (Versteckte) Zeilenumbrüche ablehnen
$sendermail = urldecode($sendermail);
$sender = urldecode($sender);
if ((eregi("(\r|\n)", $sendermail)) || (eregi("(\r|\n)", $sender))) {
die ("ACHTUNG: Unter Name und Mailadresse dürfen keine Zeilenumbrüche eingegeben werden.");
}


$text = "$sender sendet folgende Nachricht:

" . $_POST["text"] . "
Die Adresse lautet $sendermail.

Newsletterbezug: $newsletter";


mail("abc@abc.net", $betreff, $text,
"From: www.abc.net");
?>


Gruß, Pida\n\n

<!--EDIT|Pida|1180377235-->

View full thread Sicherheit der mailer.php: Warum kommen fast leere mails an?