# Email und Formular: manchmal zusätzlich leere Emails



## kunstler (16. Mai 2009)

Hallo,

ich betreibe meine Webseite http://www.robert-bauer.eu

Dort verwende ich einige Formulare, die dann die Daten per Emailfunktion an mich oder andere Personen senden.

Funktioniert alles so wie ich es gerne hätte und die Daten werden richtig übertragen.

*Nun der Fehler:*

Manchmal werden zu den gewünschten Emails gleichzeitig noch zusätzliche Emails versendet, die dann keine Daten enthalten. Also beispielsweise werden dann keine Absender, keine Namen und so übermittelt. 

(Es kann nicht sein, dass zufällig jemand anderes gleichzeitig leere Formulare abschickt, da leere Fehlermeldungen vorab abgefangen werden.)

Ich habe noch nicht herausgefunden, nach welcher Systematik der Fehler auftritt. Gebe ich bspw. immer die exakt gleichen Daten ins Formular ein, dann tritt der Fehler manchmal auf und manchmal nicht.

Ich hänge euch noch meine zentrale EMailfunkion an. Diese wird dann von den einzelnen Formularseiten aufgerufen.


[entfernt]


Vielleicht hat ja jemand ne Idee? Wäre nett!


----------



## CookieBuster (16. Mai 2009)

An der Funktion selber, kann ich mal keinen Fehler entdecken. Wo und wie wird die Funktion den aufgerufen? Kann es hier zu einem Fehlaufruf kommen?


----------



## kunstler (16. Mai 2009)

Also die Funktion wird beispielsweise bei meinem Standard-Kontaktformular aufgerufen:

http://www.robert-bauer.eu/kontakt/


Der Quellcode schaut dort so aus:

[entfernt]


Liegt das möglicherweise an den leeren cc bzw. bcc-Feldern? Glaube ich aber eigentlich nicht ...

Und irgendwie mit mehrmaligem Senden im Firefox hintereinander und doppelter Variablenbelegung dürfte es eigentlich auch nicht zusammenhängen, da die Variabelen ja bei jedem Funktionsaufruf neu belegt werden.

Keine Ahnung ...


----------



## kunstler (18. Juni 2009)

*Problem besteht nach wie vor ...*

Hallo zusammen,

hat zufällig noch jemand einen Rat für mich?

Wäre nett, da ich selber da echt nicht weiterkomme.

Wie gesagt: manchmal passt alles, manchmal wird zusätzlich zur richtigen Mail eine leere dazu verschickt, und manchmal wird nur eine leere Mail verschickt.

Heute hat z.B. jemand auf meiner Seite das Kontaktformular ausgefüllt und abgeschickt, bei mir kam aber nur folgendes an:


```
...

Es wurde eine neue Nachricht über das Kontaktformular auf www.robert-bauer.eu geschrieben.

Vorname:   
Nachname:   
Email:   
Nachricht:   

Liebe Grüße
...
```

Eigentlich müsste jetzt bei allen vier Feldern (Vorname usw.) was stehen, da man das Formular nicht abschicken kann, wenn mindestens eines der Felder leer ist.

Für mich ist das sehr ärgerlich, da ich nun nicht weiß, wer mir geschrieben hat und die Person wartet jetzt sicher auf eine Antwort von mir.

Also bitte helft mir!

Danke!


----------



## Sven Mintel (18. Juni 2009)

Moin,



> (Es kann nicht sein, dass zufällig jemand anderes gleichzeitig leere Formulare abschickt, da leere Fehlermeldungen vorab abgefangen werden.)



wo denn, in den geposteten Passagen kann ich nichts entdecken, was dies tun könnte.


----------



## kunstler (18. Juni 2009)

Danke für deine Antwort, aber ehrlich gesagt verstehe ich nicht genau, was du damit meinst. Hast du zufällig das "nicht" überlesen, denn ich gehe ja eben davon aus, dass es nicht möglich ist...


----------



## kuddeldaddeldu (18. Juni 2009)

Hi,

ich vermute, Sven meint den letzten Teil des Satzes:



> (Es kann nicht sein, dass zufällig jemand anderes gleichzeitig leere Formulare abschickt, *da leere Fehlermeldungen vorab abgefangen werden*.)



Wir glauben nix, was wir nicht gesehen haben. ^^

LG


----------



## Sven Mintel (18. Juni 2009)

kuddeldaddeldu hat gesagt.:


> Wir glauben nix, was wir nicht gesehen haben.



So siehts aus ;-]


----------



## kunstler (19. Juni 2009)

Ok, danke erstmal dazu. Werde diesen Punkt später nochmal genauer prüfen.

Bin nun auf ein neues Phänomen beim gleichen Formular gestoßen:

Seit Kurzem (ich habe nicht die geringste Änderung am Code vorgenommen!) wird beim oben genannten Kontakformular nach dem Klick auf "Absenden" die Fehler 403-Meldung angezeigt und keine Nachricht verschickt. Das war früher nicht so.

Kann man sagen, ob das an meinem Rechner liegt oder woran könnte das liegen? Früher kam diese Meldung ja nicht

(Ich habs mit FF und IE getestet)

Der Link, bei dem der Fehler erscheint, ist an sich schon erreichbar, da das Absenden über die gleiche php-Datei nur mit anderem Parameter aufgerufen wird:

[entfernt]

Weil bei 2. eben eine leere Email verschickt wird, wenn keine Daten angegeben wurden, ist das vielleicht die Lsg. für das obige Problem, das erklärt aber nicht den 403er Fehler...

Danke!


----------



## Sven Mintel (19. Juni 2009)

Ich bekomme da keinen 403, wenn ich was eintrage und abschicke :-(


----------



## Maik (19. Juni 2009)

Sven Mintel hat gesagt.:


> Ich bekomme da keinen 403, wenn ich was eintrage und abschicke :-(


Ich schon (via http://www.robert-bauer.eu/kontakt/):


			
				http://www.robert-bauer.eu/news/index.php?a=2 hat gesagt.:
			
		

> Error 403 - Zugriff verweigert
> 
> *Es ist ein Fehler aufgetreten. Leider haben Sie keine Berechtigung, diese Seite anzusehen.*
> 
> ...



mfg Maik


----------



## kunstler (20. Juni 2009)

Danke für das Testen.

Bei mir sind ein paar Mails eingegangen und ich habe auch selber noch ein wenig getestet.

Das Kontaktformular sowie das Bestellformular (Flohmarkt) führt bei mir zu einem Fehler 403 (obwohl das früher beides lief) und bei der Newsletter-An- und Abmeldung klappt es.

Alle drei Formulare basieren auf den gleichen Methoden.

Kann es sein, dass hier mein Provider die Seiten sperrt, weil das Versende leerer Formulare als Angriff von außen oder was weiß ich interpretiert wird?

Oder woran könnte das sonst noch liegen?


----------



## Sven Mintel (20. Juni 2009)

Ahso...jetzt sehe ich es auch 


Naja, dort steht ja etwas von 403...aber das sieht nun nicht gerade nach dem Standard-Hinweis des Servers aus. Wie/wo wird dieser Hinweis denn erzeugt?
Ein bissl mehr Code wäre schon hilfreich.


----------



## kunstler (20. Juni 2009)

Ich habe für einige Fehlermeldungen, die erzeugt werden können, eine vordefinierte Seite angelegt, um eben eine sehr trockene und wenig hilfreiche Seite des Servers zu vermeiden. Das hat damit aber nichts zu tun ...

Hier nun noch ein bißchen Code (bezogen auf das normale Kontaktformular http://www.robert-bauer.eu/kontakt/)


[entfernt]

Eigentlich müsste ich im 2. Fall auch noch überprüfen, ob alle Felder ausgefüllt sind. DAs hole ich demnächst nach, er erklärt aber meines Erachtens nicht den 403er-Fehler.


----------



## Sven Mintel (20. Juni 2009)

Mmmh, wenn diese Fehlerseite von dir angelegt wurde(ich nehme mal an per ErrorDocument-Direktive), dann wüsst ich  da nichts im Skript, was dafür verantwortlich sein könnte.

Könntest du mal den Inhalt von .htaccess und email.php posten?


----------



## kunstler (20. Juni 2009)

Hier die .htaccess:


```
ErrorDocument 401 /fehler/fehler401.php
ErrorDocument 403 /fehler/fehler403.php
ErrorDocument 500 /fehler/fehler500.php
ErrorDocument 404 /fehler/fehler404.php
```

Die email.php steht zum Großteil schon oben, aber ich schreib sie hier nochmal komplett rein:

[entfernt]


----------



## Sven Mintel (21. Juni 2009)

Sorry, ich kann kein Problem finden, welches dies verursachen könnte.:-(


----------



## kunstler (21. Juni 2009)

Danke für deine Bemühungen ...

Ich habe selber leider auch keinen blassen Schimmer, woran das nun liegen könnte.

Vielleicht noch eine Idee: vor ein paar Wochen hat jemand zweimal eines meiner Formulare ausgefüllt und Spamlinks auf irgendwelche Viagra-Seiten eingetragen.

Allerdings ohne Konsequenz, da die Daten nur per EMail an mich versendet wurden (also nirgends veröffentlicht oder anderen Leuten per Mail zugeschickt wurden).

Besteht hier die Möglichkeit, dass mein Provider auf Grund eines Spamfilters etc. die Seiten mit einem 403er sperrt, bei denen solche Daten eingetragen wurden?

Ist aber eher unwahrscheinlich, da hierfür z.B. das Umfrageformular u.a. verwendet wurde und bei dem taucht kein 403er Fehler auf.

Lohnt es sich hierfür mal beim Provider nachzufragen?


----------



## Sven Mintel (21. Juni 2009)

Jo, eine Anfrage beim Provider kann nichts schaden.

403 Forbidden kommt idR. bei Dateien, für welche nicht die nötigen Zugriffsrechte bestehen...daran kann es aber nicht liegen, da die einzelnen Skripte in anderen Fällen ja zugreifbar sind.


----------



## kunstler (24. Juni 2009)

Also ich habe jetzt mal beim Provider nachgefragt und ihm ein paar Einträge meiner error_log-Datei geschickt:


```
[Tue Jun 23 22:49:36 2009] [error] [client ***] ModSecurity: Access denied with code 403 (phase 2). Pattern match "(< ?(?:script|about|applet|activex|chrome).*(?:script|about|applet|activex|chrome) ?>|> ?< ?(img ?src|a ?href) ?= ?(ht|f)tps?:/|" ?> ?<|" ?[a-z]+ ?<.*>|> ?"? ?(>|<)|< ?/?i?frame|\\%env)" at ARGS:abschicken. [file "/etc/apache2/modsec2/10_asl_rules.conf"] [line "570"] [id "340147"] [rev "38"] [msg "Generic XSS filter"] [severity "CRITICAL"] [hostname "www.robert-bauer.eu"] [uri "***"] [unique_id "***"]

[Tue Jun 23 23:10:04 2009] [warn] RSA server certificate CommonName (CN) `srv13.sysproserver.de' does NOT match server name!?
```

Er hat dann irgendwas bei mir als "Ausnahme" eingestellt und nun klappt es wieder, zumindest ist seitdem kein 403er-Fehler aufgetaucht.

Kann mir jemand sagen, was da schief gelaufen ist zum Verständnis für mich?


---


Dann zurück zum ursprünglichen Problem mit den teilweise leeren Formularen. Dieses besteht nach wie vor unverändert. Weiß jemand was?

Danke!


----------



## Sven Mintel (24. Juni 2009)

Mmmh, wenn ich raten dürfte, würde ich tippen, dass sich da jemand(ModSecurity) verschluckt hat an den beiden spitzen Klammern im Value des Submit-Buttons...so würde ich das  zumindest aus der Meldung herauslesen.


----------



## kunstler (26. Juni 2009)

ok danke, die Fehlermeldung ist für mich ehrlich gesagt recht unverständlich.

Du meinst also, der 403er-Fehler wurde deshalb ausgelöst, weil ich auf dem Button ">> weiter" bzw. ">> abschicken" stehen habe und nicht einfach nur "weiter"?

Könnten die ">>" auch Schuld daran sein, dass manchmal leere Formulare abgeschickt werden oder ist das ausgeschlossen?


----------



## Sven Mintel (26. Juni 2009)

Jo, ich gehe davon aus, das die spitzen Klammern als Versuch einer XSS-Attacke interpretiert werden.

An der leeren Email aber werden die Klammern eher weniger Schuld sein.
Es ist halt so, dass du garnicht prüfst, ob überhaupt POST-Daten vorhanden sind, wenn a 2 ist...du setzt vorraus, dass dies so ist.

Es hindert mich jedoch nichts daran, die Seite mit dem Parameter a=2 direkt aufzurufen(ohne den Schritt über a=1).

Techniken wie bspw. das HTTP-Pipelining im Firefox könnten dann diese leeren Emails ohne böse Absicht verursachen.


----------



## kunstler (27. Juni 2009)

Mich wundert das mit den spitzigen Klammern aber trotzdem, weil ich ja eigentlich nicht direkt >> eingetragen habe, sondern:


```
<input type='submit' value='&gt;&gt; abschicken' name='abschicken'>
```

Wäre es dennoch sinnvoll, die &gt; rauszunehmen?

Das mit den ggf. leeren Parametern werde ich mir nochmal anschauen. Das könnte ein Ansatz sein. Danke!


----------



## Sven Mintel (27. Juni 2009)

Es ist ja nicht wichtig, was du da eingetragen hast....es kommt drauf an, was daraus wird, wenn du das Formular abschickst....dann werden es wieder spitze Klammern.

Du kannst ja stattdessen dieses verwenden:*»*


----------



## kunstler (27. Juni 2009)

Hallo,

zu den doppelten Formularen, bei denen eines stimmt, das zweite leer ist:

Beispiel: jemand füllt ein Formular aus und ich erhalte eine Email mit den Formulardaten. Meist noch in der gleichen Minute oder eine Minute danach erhalte ich eine zweite Mail ohne Formulardaten.

Bei einigen Formularen wird dabei die IP-Adresse des Users an mich übermittelt. Nun habe ich gerade festgestellt, dass es zwei unterschiedliche IP-Adressen sind.

Es ist äußerst unwahrscheinlich, dass jemand anderes zur gleichen Zeit ein leeres Formular abschickt. Denn: ich erhalte derzeit relativ selten eine solche Anfrage, aber immer wenn das Problem auftrat, wurde dabei in der gleichen Minute eine leere Mail geschickt.

Kann es sein, dass der Server oder ein Crawler etc. noch zusätzlich eine weitere Email automatisch generiert oder dergleichen?

Zeitpunkt vom letzten Auftreten:
27.6. 11:05 (IP 88.***) (richtig ausgefüllt)
27.6. 11:06 (IP 66.249.***) (Email ohne Formulardaten)

Habe soeben in der error_log gesehen, dass die zweite IP nach der robots.txt gesucht hat (s.u.). Ist das irgendwie ein Crawler von google o.ä., der dann auch ein leeres Formular schickt, wenn irgend jemand eines bei mir ausfüllt?

Hier noch mein error_log:


[entfernt]


Danke!


----------



## Sven Mintel (27. Juni 2009)

kunstler hat gesagt.:


> Habe soeben in der error_log gesehen, dass die zweite IP nach der robots.txt gesucht hat (s.u.). Ist das irgendwie ein Crawler von google o.ä., der dann auch ein leeres Formular schickt, wenn irgend jemand eines bei mir ausfüllt?



Jo, da sind ganz sicher Bots:
66.249.72.202 Googlebot
65.55.209.157 MSNBot
208.96.54.74 (Servepath, soweit ich weiss ein Bot, der nach Mailadressen sucht)

Sie tun halt das, wozu sie da sind...das Netz durchsuchen.
Das wird jetzt sogar öfter passieren, da du die a=2 -Seite hier im Thema direkt verlinkt hast, und Bots sind bei uns Stammgäste.

Nach robots.txt suchen Bots standardmässig, weil diese Datei, falls vorhanden, Anweisungen für Bots enthält(z.B. dass sie etwas nicht durchsuchen sollen)


----------



## kunstler (27. Juni 2009)

Ok danke,

dann werde ich jetzt mal einen Captcha-Schutz einbauen oder im Schritt a=2 keine leeren Felder mehr zulassen etc. Hoffe dass es damit dann erledigt ist.



Was mich nach wie vor wundert ist, dass die Bots scheinbar fast immer nur in exakt der Minute gesucht haben, in der jemand anderes ein Formular abgeschickt hat.

Aber ein Bot wird doch nicht dadurch, dass irgendjemand was eintippt, zum Laufen gebracht, oder?


----------



## Sven Mintel (28. Juni 2009)

kunstler hat gesagt.:


> Was mich nach wie vor wundert ist, dass die Bots scheinbar fast immer nur in exakt der Minute gesucht haben, in der jemand anderes ein Formular abgeschickt hat.
> 
> Aber ein Bot wird doch nicht dadurch, dass irgendjemand was eintippt, zum Laufen gebracht, oder?



Nö, das wird er nicht.
Es wäre zwar denkbar, dass da ein Browser über Hintertürchen mit dem Bot kommuniziert, aber das halte ich zumindest bei GoogleBot und MSNBot für ausgeschlossen, da dies ein ungeheuerlicher Eingriff in die Privatsphäre wäre.

Ich würde es daher auf den Zufall schieben.


----------



## kunstler (28. Juni 2009)

kann natürlich schon sein, dass es reiner Zufall war, aber die Wahrscheinlichkeit dafür ist einfach sehr gering. 

Wenn bspw. (und das ist realistisch) in einem Monat bei einem Formular an fünf verschiedenen Tagen 5 Anfragen gestellt werden und parallel dazu 5 leere Formulare geschickt werden, wobei 4 davon immer in der gleichen oder darauffolgenden Minute erstellt werden und eines zu einem beliebigen Zeitpunkt, dann ist die Wahrscheinlichkeit dafür:

(2/1440)^4 * 1440/1440 = 3,7 * 10^(-12) = *0,000000000372%*

(1440 = 60 *24 = Anzahl Minuten pro Tag)


----------



## Sven Mintel (29. Juni 2009)

Die andere Variante wäre dann, dass MS und Google Spyware auf den Rechnern der Formularbenutzer installiert haben...hältst du das für wahrscheinlicher?


----------



## kunstler (29. Juni 2009)

Damit kenn ich mich nicht aus, das kann ich nicht beurteilen.

Vielleicht übersehe ich ja einfach irgend eine dritte Möglichkeit.

Keine Ahnung.


----------

