Ein Formular hat in der Regel mehrere ID-Felder. Sie sind meistens so benannt, dass ein User das Feld und dessen Funktion schnell identifizieren kann, zum Beispiel Name, E-Mail-Adresse. Meist wird auch definiert, welches Feld ein Pflichtfeld ist.
Ein HTML-Formular dazu kann wie folgt aussehen:
Aus diesen Informationen kann ein Bot bereits erkennen, welche Angaben vom User verlangt werden, wie der POST-Request formuliert werden muss und wohin die eingegebenen Daten geschickt werden müssen.
Info: Bei der POST-Methode sind die Daten, im Gegensatz zur GET-Methode, nicht Teil der URL. Die übermittelten Daten sind für User nicht sichtbar, sodass die Methode im World Wide Web bevorzugt für sensible Bereiche, wie eben Formulare, eingesetzt wird.
In unserem HTML-Formular gibt es unter action das Script pfad-zum-script.php, das die folgenden Daten per POST entgegennimmt:
- firstname = Vorname
- lastname = Nachname
- emailaddress = E-Mail-Adresse
Abhängig davon, wie die Daten im PHP-Script validiert werden (beispielsweise über die Zeichenlänge oder das Format), können die Informationen schon ausreichend sein, um daraus Spam-E-Mails zu generieren, die dann mithilfe des Scripts verschickt werden. Nachfolgend finden Sie als Beispiel ein minimales PHP-Script, das ohne E-Mail-Funktion erstellt wurde:
In unserem Formularbeispiel bestehen wir mit dem Attribut required="required" darauf, dass alle Felder ausgefüllt werden müssen und dass die Eingabe in dem Feld "emailaddress" einer E-Mail-Adresse entspricht. Diese Daten werden im PHP-Script zwar abgefragt, aber nicht wirklich validiert.
Wird also per POST nur die E-Mail-Adresse korrekt übermittelt, kann dadurch schon ein E-Mail-Versand ausgelöst werden. Hier könnte also ein Bot einen POST absenden, der nur die E-Mail-Adresse enthält und wäre damit teilweise schon erfolgreich. Dieser Bot-Befehl könnte beispielsweise so aussehen:
Häufig missbrauchen Bots zusätzlich auch die Felder "Vorname" und "Nachname" für ihre Spam-Nachrichten:
Durch solche Formulare steigt das Missbrauchspotential enorm an. Leider müssen wir häufig feststellen, dass namhafte und beliebte Content Management Systeme in den Standardeinstellungen keinen Schutz für Formulare aktivieren. Kunden werden in den meisten Fällen erst auf dieses Problem aufmerksam, wenn das CMS bereits für Spam missbraucht wurde.
Bots hinterlassen in den Logfiles der Webserver ihre Spuren. Um also zu prüfen, ob Ihr CMS von einem Spam-Bot aufgesucht wurde, reicht ein Blick in das access.log Ihrer Website. Das kann in gekürzter Form wie folgt aussehen:
In unserem Beispiel können Sie erkennen, dass unterschiedliche IP-Adressen (zum Beispiel 94.142.x.x oder 109.70.x.x) POST-Anfragen auf die URL /newsletter senden und dabei keinen Referrer mitliefern. Der User Agent ist dabei meist derselbe.
Darüber hinaus sollten Sie auch die IP-Adresse prüfen. Sie gibt Aufschluss darüber, ob der Request von einer IP eines Internetanbieters, zum Beispiel Telekom, Vodafone, etc., generiert wurde oder von einem Server-Anbieter stammt. Für die IP-Analyse gibt es verschiedene Online-Tools, zum Beispiel "Whois" von der Heise Medien GmbH & Co. KG.