Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Problem mit Kontaktformular [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Problem mit Kontaktformular


 
JayQ
07-12-2005, 11:07 
 
Hallo zusammen

ich habe einfaches HTML Formular gebastelt das ausgefüllt per Email verschickt wird:

$email_header = "From: ".$email;
$text = "Request-URI: ".$_SERVER["REQUEST_URI"]."\n";
$text .= "User-Agent: ".$_SERVER["HTTP_USER_AGENT"]."\n";
$text .= "Remote-Addr: ".$_SERVER["REMOTE_ADDR"]."\n";
$text .= "Remote-Port: ".$_SERVER["REMOTE_PORT"]."\n\n";
$text .= "Firma: ".$firma."\r\nName: ".$name."\r\nTelefon: ".$telefon."\r\nEmail: ".$email."\r\nAnliegen:\r\n".$anliegen;
$text = str_replace("\r\n", "\n", $text);
$text = stripslashes($text);
$text = str_replace("%quotes%", "\"", $text);
$text = stripslashes($text);

$subject = "Kontaktformular Anliegen";
$subject = stripslashes($subject);
$subject = str_replace("%quotes%", "\"", $subject);
$subject = stripslashes($subject);

$address="info@aragorn.ch";
$mail_send = mail($address,$subject,$text,$email_header);

Nun hab ich das Problem, dass täglich Mails wie diese unten reinkommen:


f262f69df0515838bf0f3f78e73105d5

.



Request-URI: /cntKontakt.html
User-Agent:
Remote-Addr: 216.187.73.58
Remote-Port: 59615

Firma: t9456@luisa.ch
Name: t9456@luisa.ch
Telefon: t9456@luisa.ch
Email: clothes
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Subject: less quizzical than
bcc: charleslegbe@aol.com

f262f69df0515838bf0f3f78e73105d5
.

Anliegen:
t9456@luisa.ch



was kann ich dagegen tun?

 
onemorenerd
07-12-2005, 11:40 
 
Ein Test auf (Referer == Formularseite) genügt meist schon, aber sicher ist er nicht. Wenn du Spambots (und danach siehts mir aus) ausschließen willst, dann am besten mit Captchas.

 
TobiaZ
07-12-2005, 11:55 
 
http://www.php-resource.de/forum/showthread.php?s=&threadid=50454 :teach:

 
JayQ
07-12-2005, 13:13 
 
Test auf (Referer == Formularseite) genügt meist schon

mit meinem Firefox lasse ich beim Surfen zum Beispiel den Referer nicht mitschicken..., dann würde das nicht funktionieren...

dann am besten mit Captchas.

jepp, das würde gehen. Nur finde ich das bei einem normalen Kontaktformular ein bisschen doof wenn mögliche Interessent nur zum schicken einer Mitteilung das machen muss...

Gibt es eventuell noch andere Lösungsmöglichkeiten?


http://www.php-resource.de/forum/sh...&threadid=50454
danke, hab den Beitrag "korrigiert".

 
TobiaZ
07-12-2005, 13:33 
 
Leider recht wenig, denn wie willst du den Mensch von einem Computer unterscheiden? (Außer durch die eingabe eines "Bild-Codes")

So ziemlich alle Vorgänge die beim Ausfüllen des Forms passieren, kannst du auch automatisieren. Das hat vorteile, aber eben auch nachteile.

Wenn der/die Bot(s) für alle Felder die gleichen Werte sendet/n, dann kannst du das ja ohne Probleme verhindern. Ein Name oder eine Telefonnummer sollte z.B. im Normalfall kein @ enthalten. Das kannst du prüfen.

 
onemorenerd
07-12-2005, 14:45 
 
Wie TobiaZ sagte, muß man Menschen irgendwie zuverlässig von Maschinen unterscheiden. Das ist nur möglich, wenn der Mensch agiert, also einen Mindestaufwand muß man ihm immer zumuten.

Die Unterscheidung kann man auf verschiedene Weisen versuchen, die eines gemeinsam haben: Sie stützen sich auf menschliche Fähigkeiten, die Maschinen (noch) nicht leisten können.

Bei genauerer Betrachtung zerfällt das in mehrere Klassen (Aufzählung evtl. unvollständig):
a) rezeptorische Fähigkeiten
b) kombinatorische Fähigkeiten
c) motorische Fähigkeiten

Alle haben Nachteile, die sich direkt aus den entsprechenden Behinderungen ergeben und sich durch Kombination leider nicht aufheben sondern addieren. Trotzdem sind Mischformen vorstellbar.

Der z.Z. gängigste Ansatz ist rezeptorisch (Captcha), weil er am einfachsten realisierbar, resourcenschonend und zuverlässig ist.

Eine kombinatorische Lösung könnte etwa so aussehen, daß man dem User eine logische oder eine Sachfrage stellt, die er korrekt beantworten muß.

Motorische Fähigkeiten würde man erkennen, wenn der User einen wandernden Punkt schnell einfängt und darauf klickt.

Soweit zur Theorie, aber wenn man bedenkt, was im Web möglich und sinnvoll ist, .... da bleibt nicht viel übrig.

 
archie
07-12-2005, 15:20 
 
@ onemorenerd: Wo kaufst du deine Drogen?
@ JayQ: ähnliches problem hatte ich auch, bis ich irgendwann man auf die idee gekommen bin. Man baut eine Listbox z.B:
[ ]
Homepage
Vorschläge/Bugreport
etc. etc.
die erste Auswahl läßt man leer und wenn nichts ausgewählt wurde soll ne Fehlermeldung ausgegeben werden und die mail nicht versendet werden. Auf der Seite, wo Spam her kam, hat es dann aufgehört, weil die wahrscheinlich eine std. Spambot laufen lassen...

 
onemorenerd
07-12-2005, 15:35 
 
@archie: Hasenheide ;)
Nein im Ernst, was soll die Frage. JayQ möchte dem User nicht zumuten, wenige Zeichen abzutippen und fragt, ob man mit weniger oder ganz ohne Aufwand absichern kann. Ich habe ihm erklärt, warum das nicht möglich ist. Und hey, ich habe mich noch kurz gefaßt!
Deine Idee paßt insofern nicht, dass sie eine Kategorisierung der Anfragen einführt, die so nicht vorgesehen ist und gleichzeitig bedeutet das ja ebenfalls einen weiteren Aufwand seitens des Users. Außerdem schützt sie nur vor wirlkich stupiden Bots und gegen diese genügt schon der Verzicht auf mail, from, to, subject bzw. deren Übersetzungen als Namen der Eingabefelder.

 
Quetschi
07-12-2005, 15:42 
 
@onemorenerd
ich denke archie hatte rein interessehalber gefragt um evtl. an eine günstigere Quelle zu gelangen - bin sicher die Frage hatte nichts mit deinem vorigen Post zu tun :D

 
JayQ
07-12-2005, 15:54 
 
hm, dann versuch ich das mal so:

Dürfen wir Sie bei speziellen Neuigkeiten informieren?
<select name="interesse">
<option value="JA">JA</option>
<option value="NEIN">NEIN</option>
</select>

Und dann im PHP - Skript folgendes einbauen:


if(array_key_exists("interesse", $_POST))
{
// weitere Anweisungen
}
else
{
// böser Bot, abbrechen und Fehlermeldung ausgeben
}


wie findet ihr das?

 
onemorenerd
07-12-2005, 16:03 
 
Du hast nicht zugehört: Das bringt nichts! Denn es ist nicht besser als TobiaZ' Antwort (kein Mehrwert) und außerdem hat das Ausnutzen spezifischer Eigenheiten der Mehrheit der Bots nichts mit Sicherheit zu tun.

Du glaubst wahrscheinlich auch immernoch, wenn du deine Mailadresse in &#<ASCII oder Hex> umwandelst, bekommst du nie Spam. :goth:

 
archie
07-12-2005, 17:18 
 
Original geschrieben von onemorenerd
Du hast nicht zugehört: Das bringt nichts! Denn es ist nicht besser als TobiaZ' Antwort (kein Mehrwert) und außerdem hat das Ausnutzen spezifischer Eigenheiten der Mehrheit der Bots nichts mit Sicherheit zu tun.

Du glaubst wahrscheinlich auch immernoch, wenn du deine Mailadresse in &#<ASCII oder Hex> umwandelst, bekommst du nie Spam. :goth:

$address="info@aragorn.ch";

Natürlich, wenn die nicht einfach so irgendwo sonst nocht steht, dann hilft aber auch:
$email = str_replace("@","<img src=\"at.gif\" align=\"middle\">", $email);

 
jahlives
07-12-2005, 17:32 
 
@archie
Und wenn man eine OCR Software verwendet? Dann dürfte auch dein @ als gif gefunden werden.


Gruss

tobi

 
onemorenerd
07-12-2005, 18:02 
 
Ganz so blöde sind sind Bots heute nicht mehr, sie erkennen ASCII- und Hex-Zeichen und suchen garantiert mit regulären Ausdrücken - [:mailaccount:](@|at|ät|<img.*".*at.*\.(gif|jpg|png)".*>)[:domain:] ist da sicher nur ein Teilausdruck ...

außerdem hat das Ausnutzen spezifischer Eigenheiten der Mehrheit der Bots nichts mit Sicherheit zu tun.
Also nenne mir bitte ein einziges Beispiel, was nachweislich heute und in aller Ewigkeit davor schützt, dass ein Bot ein Formular ausfüllt. Denk aber bitte 10 Minuten darüber nach!


Alle Zeitangaben in WEZ +2. Es ist jetzt 19:54 Uhr.