Hilfe zum Thema "Kontaktformular"

E

einsteiger

Guest
Hallo
Ich habe mir über ein Kontaktformular-Generator ein passendes Kontaktformular erstellen lassen. Nun ist es aber so, dass die Anfragen der User über den Server des Anbieters laufen, bei dem ich mir das Formular erstellt habe. Ich möchte das allerdings lieber über meine Webspace laufen lassen. Leider weiss ich nicht, wie man solch ein script schreibt (ich glaube das läuft doch über php oder..?). Kann mir da jemand vielleicht weiterhelfen? Den Quellcode des Formulars könnte ich gerne zuschicken, damit man das anpassen kann

Meine Webspace beinhaltet:

> 2.500 MB Webspace
> Unbegrenzter Traffic
> 600 E-Mail-Adressen
> 50 GB E-Mail-Speicher
> PHP 4, 5, Perl, SSH
> 15 MySQL-Datenbanken

Ich hoffe, dass alle Voraussetzungen damit erfüllt werden

Vielen Dank schon mal im vorraus!
 
Würde nicht auch ein einfaches HTML-formular reichen das dir die Anfrage als Mail weiterleitet?

 
Hallo.
Vielen Dank für die schnelle Antwort...
Das geanze über html laufen zu lassen, wäre mir ehrlich gesagt am liebsten :) geht das denn?
also für mich wäre es am praktischtsten es so zu machen, wie Du es vorschlägst. Nur wie geht das?
MFG
 
Schau mal unter Google nach selfhtml.
Da müßtest du im Bereich HTML eine Erklärung zu Formularen mit der mailto-Option finden.

 
Wenn Du bzw. dein Server schon PHP besitzt, dann solltest Du auch PHP verwenden
wink.gif

Der Aufbau eines HTML-Formulars ist eigentlich recht simple.
Ich schicke Dir hier mal ein Beispielskript, welches natürlich sehr vereinfacht ist...


Dein Formular (formular.html)
CODE
<form action="senden.php" method="post" name="meinkontaktfomular">
Wie heißen Sie denn? <input name="username"></br>
Ihre Emailadresse? <input name="useremail"></br>
<textarea name="nachricht" cols="10" rows="5"></textarea></br>
<!-- Das ganze kann natürlich x-beliebig erweitert werden -->
<input type="submit name="abschickbottom">
</form>



Dein Skript (deine Seite) die das Formular auswertet und die Email verschickt (senden.php)

CODE
<?php
$username = $_POST['username'];
$useremail = $_POST['useremail'];
$nachricht = $_POST['nachricht'];
$betreff = "Kontaktaufnahme über meine Homepage";
$empfaenger = "meine@mailadresse";
$absender = "From: Kontaktformular <$useremail>";
$mailinhalt = "$username schreibt: $nachricht";
mail($empfaenger, $betreff, $mailinhalt, $absender);
?>


 
Bitte so nicht. Ich habe ja fast keine PHP-Kenntnisse (ok, inzwischen schon manche), aber das läßt sich sofort als Spamschleuder verwenden.

Einfach als Mailadresse so etwas wie

meinemail@meine-domain.de\nBBC:mail1@domain1.de,mail2@domain2.de

eingeben.

Googele mal nach Mail Header Injection.

PS: Man muß halt diese Spitzklammer korrekt handeln, aber das ist simpel.
 
QUOTE (jAuer @ Sa 11.10.2008, 23:57) Bitte so nicht. Ich habe ja fast keine PHP-Kenntnisse (ok, inzwischen schon manche), aber das läßt sich sofort als Spamschleuder verwenden.


Ich weise ausdrücklich in meinem Beitrag darauf hin, dass das von mir gepostete Skript eine vereinfachte Darstellung ist.
Natürlich sollte man so es nicht unbedingt anwenden, da es natürlich zum Spammen missbraucht werden kann... generell ging es mir nur um das verdeutlichen einer Grundstruktur eines Kontaktformulars!

meinemail@meine-domain.de\nBBC:mail1@domain1.de,mail2@domain2.de

Diese Zeile ist nun weder Spamsicher- noch in Ansätzen professionell.... sorry, aber das ist meine Meinung!
 
Die Zeile von jAuer ist kein Beispiel für spamsicheren Code sondern für einen Eingabecode, mit welchem dein Formular zum Spammen missbraucht werden kann.
 
Ich würde mal schauen ob Dein Webspace Anbieter auch CGI anbietet was ja fast Standard ist wenn Du das hast schau mal bei Gockele nach CGI Formmailer Kann mir nicht vorstellen das es noch Anbieter gibt die CGI nicht anbieten.

 
Hallo Leute...
Vielen Dank, dass ihr mir versucht hier zu helfen. Doch nach vielen Versuchen habe ich es, trotz hilfreichen Tips, immer noch nicht auf die Reihe bekommen, das ganze auf die Beine zu stellen.
Könnte mir denn jemand zu dem beigefügten Code ein passendes php-skript erstellen? Wäre sehr Dankbar!

CODE
<form action="http://www.pkv-betreuer.de/formular.php" method="post">
<input type="hidden" name="page_tv" value="" />
<input type="hidden" name="pflicht" value="absender_anrede,absender_nachname,absender_Vorname,absender_strasse,absender_plz_ort,absender_fon,absender_erreichbar,absender_familienstand,absender_beruf" />
<input type="hidden" name="empfaenger_mail" value="mediasuite@web.de" />
<input type="hidden" name="language" value="de" />
<input type="hidden" name="page_background_color" value="#ECF8FF" />
<input type="hidden" name="page_font_color" value="#000000" />
<table align="center" class="table" border="0" cellspacing="1" cellpadding="3">
<tr>
<td colspan="2" class="head" height="17" width="100%" align="left"><span class="font-big"><b>Kostenloses Informationsangebot</b></span></td>
</tr>
<tr>
<td class="main" colspan="2" height="16" width="100%"><span class="font-small">Bitte füllen Sie alle mit * markierten Felder aus. (Pflichtfelder)</span></td>
</tr>
<tr>
<td class="main" width="30%"><div class="align">Anrede*</div></td>
<td class="main"><select class="select" name="absender_anrede">
<option value="">Bitte wählen</option>
<option value="Herr">Herr</option>
<option value="Frau">Frau</option>
</select>
</td>
</tr>
<tr>
<td class="main" width="30%"><div class="align">Nachname*</div></td>
<td class="main"><input class="input" type="text" name="absender_nachname" size="30" /></td>
</tr>
<tr>
<td class="main" width="30%"><div class="align">Vorname*</div></td>
<td class="main"><input class="input" type="text" name="absender_Vorname" size="30" /></td>
</tr>
<tr>
<td class="main" width="30%"><div class="align">Strasse / Nr.*</div></td>
<td class="main"><input class="input" type="text" name="absender_strasse" size="30" /></td>
</tr>
<tr>
<td class="main" width="30%"><div class="align">PLZ / Ort*</div></td>
<td class="main"><input class="input" type="text" name="absender_plz_ort" size="30" /></td>
</tr>
<tr>
<td class="main" width="30%"><div class="align">Telefon / Mobil*</div></td>
<td class="main"><input class="input" type="text" name="absender_fon" size="30" /></td>
</tr>
<tr>
<td class="main" width="30%"><div class="align">E-Mail Adresse</div></td>
<td class="main"><input class="input" type="text" name="absender_mail" size="30" /></td>
</tr>
<tr>
<td class="main" width="30%"><div class="align">Sie sind erreichbar:*</div></td>
<td class="main"><select class="select" name="absender_erreichbar">
<option value="">Bitte wählen</option>
<option value="vormittags">vormittags</option>
<option value="nachmittags">nachmittags</option>
<option value="abends">abends</option>
<option value="nur am Wochenende">nur am Wochenende</option>
<option value="immer">immer</option>
</select>
</td>
</tr>
<tr>
<td class="main" width="30%"><div class="align">Familienstand*</div></td>
<td class="main"><select class="select" name="absender_stand">
<option value="">Bitte wählen</option>
<option value="ledig">ledig</option>
<option value="verheiratet">verheiratet</option>
</select>
</td>
</tr>
<tr>
<td class="main" width="30%"><div class="align">Beruf*</div></td>
<td class="main"><input class="input" type="text" name="absender_beruf" size="30" /></td>
</tr>
<tr>
<td class="main" width="30%"><div class="align">Derzeit versichert bei:</div></td>
<td class="main"><input class="input" type="text" name="absender_versichert" size="30" /></td>
</tr>
<tr>
<td class="main" width="30%"><div class="align">Hier können Sie bei Bedarf auch einen Kommentar hinterlassen</div></td>
<td class="main">(Restzeichen: <span id="count_1">2500</span>)<br /><textarea class="textarea" name="absender_text" id="absender_text" cols="30" rows="8" onkeydown="rest(this,2500,'count_1',event)" onkeyup="rest(this,2500,'count_1',event)" onchange="rest(this,2500,'count_1',event)"></textarea>
</td>
</tr>
<tr><td class="foot" colspan="2" align="center" height="25" width="100%"><input class="button" type="submit" value="Abschicken" />    <input class="button" type="reset" value="Zurücksetzen" /></td></tr>
</table>
</form>

 
QUOTE (littlefish @ So 12.10.2008, 11:29) Eigentlich muss man nur das Kontaktformular Skript durch ein Captcha-Skript erweitern.

Captchas sind hier kein hundertprozentiger Schutz, da ein Angreifer die manipulierte Eingaben auch manuell eingeben kann und Captchas z.T. auch schon auslesbar sind. Über eine einzelne Eingabe können über den BCC-Header zahlreiche Spam-Mails versendet werden, der Schaden kann also beträchtlich sein. Wenn du dein Formular wirklich sicher machen möchtest, musst du die Eingaben filtern - d.h. bei den Header-Eingaben die Zeilenumbrüche entfernen. Siehe auch:

http://de.wikipedia.org/wiki/E-Mail-Injektion
 
Also in Bezug auf Sicherheit: man kanns auch übertreiben!
Scheinbar handelt es sich doch hier um eine private Website, auf der ein Formular eingerichtet wird, um Anfragen an die eigene Mailadresse schicken zu lassen.
Also beim Empfänger eifnach nicht mit Variablen arbeiten und schon hat sich die Sache. Merkt er, dass Mails ankommen, wo versucht wird Schadcode einzubringen, dann kann ers immernoch offline nehmen und überarbeiten. Oder nachträglich immer noch einen Captcha bei Massenmails einarbeiten, oder Cookies setzen, damit nur alle 15min. Mails versendet werden können von einer gleichen ClientIP...
 
QUOTE (EmotionalFunction @ So 12.10.2008, 19:11)Also in Bezug auf Sicherheit: man kanns auch übertreiben!
Scheinbar handelt es sich doch hier um eine private Website, auf der ein Formular eingerichtet wird, um Anfragen an die eigene Mailadresse schicken zu lassen.
Also beim Empfänger eifnach nicht mit Variablen arbeiten und schon hat sich die Sache. Merkt er, dass Mails ankommen, wo versucht wird Schadcode einzubringen, dann kann ers immernoch offline nehmen und überarbeiten. Oder nachträglich immer noch einen Captcha bei Massenmails einarbeiten, oder Cookies setzen, damit nur alle 15min. Mails versendet werden können von einer gleichen ClientIP...

Mit so einem Formular lassen sich - nächtlich ab 00:30 - tonnenweise Mails versenden. Eine geht immer an den beabsichtigten Empfänger, die anderen 1000 gehen an @EmotionalFunction, mein und noch an diverse andere Postfächer, die sich über den neuesten Spam freuen.

Und wenn der Provider einen Automatismus hat, dann sperrt er bsp. um 02:00 die gesamte Domain. Bis dahin sind aber genügend Mails verschickt worden - sonst hätte der Automatismus nicht gegriffen.

Wenn also @einsteiger am nächsten Morgen online geht, dann wundert er sich, warum seine Domain nicht mehr online ist und warum sein Mailfach überquillt. Nur: Es ist nicht bloß sein Mailfach, das überquillt.

PS: Das ist eine einzige Mail, die da verschickt wird - dummerweise geht die bloß an tausend oder 100.000 Empfänger. Und wer nicht in der Lage ist, das richtig zu filtern, der wird in der Lage sein, ein IP-bezogenes Cookie zu setzen
mad.gif
 
QUOTE Also in Bezug auf Sicherheit: man kanns auch übertreiben!
Scheinbar handelt es sich doch hier um eine private Website, auf der ein Formular eingerichtet wird, um Anfragen an die eigene Mailadresse schicken zu lassen.
Also beim Empfänger eifnach nicht mit Variablen arbeiten und schon hat sich die Sache.


Nein das reicht nicht, wenn an anderer Stelle eine ungefilterte Variable in einen Header eingefügt wird, wie in diesem Beispiel $useremail. Der Angreifer kann darüber eigene Header einfügen und die Mails auch an ganz andere Empfänger senden.


QUOTE Merkt er, dass Mails ankommen, wo versucht wird Schadcode einzubringen, dann kann ers immernoch offline nehmen und überarbeiten.


Dann ist es schon zu spät, zu reagieren. Es gab schon einige Webmaster, die aus allen Wolken gefallen waren, weil ihr Hoster ihre Domains offline genommen haben oder ihre Emails geblacklistet waren, nachdem ihr unsicheres Kontaktformular zum Spammen missbraucht wurde.

Edit: da war ich etwas langsam
wink.gif
 
Diese ungefilterten Variablen muss man aber auch erstmal rausfinden. Und seien wir mal ehrlich: wer das kann, der beschäftigt sich nicht mit solchen privaten Seiten. Darum ging es mir eigentlich
wink.gif
(Und wenn es nur um den SPAM-Versand solcher Leute geht, dann gibts einfachere Methoden als über irgendein Kontaktformular vom BSC Buxtehude aus der 11. Oberliga)
Ansonsten habt ihr natürlich recht!
Variablen sollten zudem alleine schon aus dem Grund von versehentlichen Fehleingaben gefiltert werden.
 
QUOTE (EmotionalFunction @ So 12.10.2008, 20:05)Diese ungefilterten Variablen muss man aber auch erstmal rausfinden. Und seien wir mal ehrlich: wer das kann, der beschäftigt sich nicht mit solchen privaten Seiten.

Das erste geht mit Techniken, zu denen ich in diesem Beitrag Wie Mailspammer nach Lücken suchen Beobachtungen gepostet habe. Es werden einfach zyklisch alle Felder ausprobiert. Die Beobachtungen sind vom Dezember 2006.

Das zweite ist falsch: Es werden Domains der Reihe nach abgegrast und die obigen Techniken darauf angewandt, analog, wie das wiederholt mit automatisierten Suchen nach Sql-Injektionen funktioniert.

Die Spammer interessiert es gar nicht, ob das eine große oder eine kleine Seite ist. Hauptsache, das Formular hat eine Lücke.
 
QUOTE wer das kann, der beschäftigt sich nicht mit solchen privaten Seiten.


diese schlussfolgerung klingt für mich nicht gerade logisch, da ja gerade auf den kleinen, privaten seiten solche schwachstellen häufig zu finden sind.

grüße
Oli
 
Zurück
Oben