Hallo,
ich habe da auch mal ein Kontaktformular nach der PHP-Self-Methode erstellt und würde gerne mal wissen, ob Ihr dort noch Sicherheitslücken oder technische Schwächen drin erkennt:
PHP
<?php
// nach dem Absenden des Formulars
if(isset($_POST['abschicken'])){
while(list($feld,$wert)=each($_POST)){
$wert=preg_replace("/(content-type:|bcc:|cc:|to:|from:)/im", "",$wert);
$$feld=$wert;
if($feld!="abschicken") $mailnachricht.=ucfirst($feld).": $wert\n";
}
$mailnachricht.="\nDatum/Zeit: ". date("d.m.Y H:i:s");
// Formular-Angaben ueberpruefen
empty($name) ? $err[] = "<p>* Sie müssen noch Ihren Namen angeben!</p>" : false;
empty($email) ? $err[] = "<p>* Sie müssen noch Ihre E-Mail-Adresse angeben!</p>" : false;
empty($text) ? $err[] = "<p>* Das Textfeld ist noch leer!</p>" : false;
// Ausgabe der Fehlermeldung
if(!empty($err)) {
echo "<p><font color=red>Es ist leider ein Fehler aufgetreten:<br /><br /></font></p>";
foreach($err as $fehler){
echo $fehler;
} ?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<br><h1> Kontaktformular</h1><br><br>
<table width="98%" border="0" cellpadding="6" cellspacing="1">
<tr><td width="35%" align="right" class="fd">*Name:</td><td align="left"><input type="text" name="name" value="<?php echo $name; ?>" style="width:100%;" /></td></tr>
<tr><td align="right" class="fd">Straße / Hausnr.:</td><td align="left"><input type="text" name="adress" value="<?php echo $adress; ?>" style="width:100%" /></td></tr>
<tr><td align="right" class="fd">PLZ / Ort:</td><td align="left"><input type="text" name="plz" value="<?php echo $plz; ?>" style="width:100%" /></td></tr>
<tr><td align="right" class="fd">Telefon:</td><td align="left"><input type="text" name="phone" value="<?php echo $phone; ?>" style="width:100%" /></td></tr>
<tr><td align="right" class="fd">*E-Mail:</td><td align="left"><input type="text" name="email" value="<?php echo $email; ?>" style="width:100%" /></td></tr>
<tr><td align="right" valign="top" class="fd">*Nachricht:</td><td align="left"><textarea rows="6" style="width:100%" name="text"><?php echo $text; ?></textarea></td></tr>
<tr><td colspan="2"></td><td> </td></tr>
<tr><td align="right"> </td><td align="left" class="fd">*Pflichtfelder<br></td></tr>
<tr><td colspan="2" align="right" nowrap><br /> <input type="submit" name="abschicken" class="button" value="Senden" style="width:25%" /></td></tr>
</table>
</form>
<br />
<br />
<br />
<p align="center"></p>
<?php // es wurden keine Fehler gefunden - die Nachricht wird versendet
} else {
$mailbetreff="Ihr Kontakt zu Mitralklappenprolaps.org";
// HIER DIE EMPFAENGER EMAIL-ADRESSE ANPASSEN!!!
echo (mail('kontakt@email.org',$mailbetreff,$mailnachricht,'From:'.$email."\r\n".'Mime-Version: 1.0'."\r\n".'Content-Type: text/plain; charset=UTF-8'."\r\n".'Content-Transfer-Encoding: quoted-printable'."\r\n".'X-Mailer: PHP/'.phpversion())) ? "<p><font color=black><br>Vielen Dank für Ihre Nachricht!<br><br>Ihre Anfrage wird so schnell wie möglich bearbeitet.<br><br></font><br /><br /><br /></p><p align=center><br><br></p>": "<p><font color=red>Es ist leider ein Fehler aufgetreten!</font></p>";
}
// dieses Formular wird dem Benutzer als erstes angezeigt
} else { ?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" accept-charset="UTF-8">
<br><h1> Kontaktformular</h1><br><br>
<table width="98%" border="0" cellpadding="6" cellspacing="1">
<tr><td width="35%" align="right" class="fd">*Name:</td><td align="left"><input type="text" name="name" value="" style="width:100%;" /></td></tr>
<tr><td align="right" class="fd">Straße / Hausnr.:</td><td align="left"><input type="text" name="adress" value="" style="width:100%" /></td></tr>
<tr><td align="right" class="fd">PLZ / Ort:</td><td align="left"><input type="text" name="plz" value="" style="width:100%" /></td></tr>
<tr><td align="right" class="fd">Telefon:</td><td align="left"><input type="text" name="phone" value="" style="width:100%" /></td></tr>
<tr><td align="right" class="fd">*E-Mail:</td><td align="left"><input type="text" name="email" value="" style="width:100%" /></td></tr>
<tr><td align="right" valign="top" class="fd">*Nachricht:</td><td align="left"><textarea rows="6" style="width:100%" name="text"></textarea></td></tr>
<tr><td align="right"> </td><td align="left" class="fd">*Pflichtfelder<br></td></tr>
<tr><td colspan="2" align="right" nowrap><br /> <input type="submit" name="abschicken" value="Senden" style="width:25%" /></td></tr>
</table>
</form>
<br />
<br />
<br />
<p align="center"></p>
<?php
}
?>
Alles anzeigen
Ich weiss jedenfalls schon mal, dass dort noch ein "htmlcharsets" eingesetzt werden muss, damit das Formular bspw. nicht für Spam-Angriffe missbraucht werden kann.
Ich weiss aber jetzt nicht genau, an welcher Stelle genau diese htmlcharsets eingesetzt werden müssen.
Vielleicht könnt Ihr mir da ja helfen.
Findet Ihr darin vielleicht sonst noch irgendwelche Fehler?
Danke schon mal im voraus.
Gruß
anykey