Captcha Alternativen?
Wie ich sie doch hin und wieder hasse, diese kleinen Bilder unter Formularen. Captchas sind sicher notwendig um bei einigen Formularen, Gästebüchern ect. nicht im Spam unterzugehen. Aber es treibt einen teilweise fast in den Wahnsinn, wenn man die kleinen Bilder nicht 100%ig lesen kann. Immer wieder kommt in großen roten Buchstaben “Bitte geben Sie den Code richtig ein”… Von Barrierefreiheit will ich gar nicht anfangen zu sprechen.
Was kann also getan werden um auf Captchas zu verzichten und trotzdem keine Spam Einträge zu erhalten? Zuerst sollte man wissen wie die meisten Spambots arbeiten. Meist wird einfach die Seite welche für das Eintragen zuständig ist direkt per POST aufgerufen (z.B. eintragen.php). Am Beispiel von einem Gästebuch würden dann die Werte $_POST[’name’], $_POST[’email’], $_POST[’homepage’] und $_POST[’nachricht’] gesendet werden, die eintragen.php nimmt die Werte entgegen und trägt sie in die Datenbank ein.
Meine Überlegung ist es ein weiteres Forumlarfeld hinzuzufügen und diesem einen dynamischen Namen zu geben, damit die Spambots so gut wie keine Chance haben dieses Feld mit zu übermitteln. Den dynamischen Namen generiere ich aus dem aktuellen Datum + einen beliebigen Wert.
<?php
function get_anti_spam_code(){
$anti_spam_value = 234;
$anti_spam = (date("dmy", time())) + $anti_spam_value;
return $anti_spam;
}
echo '<input type="hidden" name="sp-'.get_anti_spam_code().'" value="1" />';
?>
Die Berechnung des Feldes kann natürlich auch anderes erfolgen, es muss nur sichergestellt sein, dass der Wert sowohl auf der Seite in der das Formular eingebunden ist und im Script welches die Werte entgegen nimmt gleich ist. Beispielsweise könnte man auch Monat * Jahr + X zur Wertermittlung nehmen usw…
Die eintragen.php wird jetzt einfach noch um eine kleine if-Bedingung erweitert:
<?php
//eintragen.php
if(isset($_POST['sp-'.get_anti_spam_code()])){
//alles ok, scheint kein spam zu sein
}
else{
// hier war wohl ein spammer am werk
}
?>
Ich hab das Prinzip jetzt seit einiger Zeit auf einigen Seiten im Test und muss sagen bisher ist kein Spam Comment durchgekommen.


Donnerstag, 18. Januar 2007 10:54
Wenn man bereits “Opfer” massiver Spambot Zugriffe geworden ist und die hier aufgeführten Massnahmen umsetzt, dann würde es sich noch lohnen in dem Zug alle Formularfelder umzubenennen.
Donnerstag, 18. Januar 2007 11:07
Klar, also allein schon das umbenennen sollte dich einige Zeit schützen.
Donnerstag, 18. Januar 2007 14:39
Ein Problem sehe ich aber, bei Spam- Flood-Angriffen wie sie derzeit häufiger werden müsste die Funktion jedesmal neu rechnen und das erzeugte noch mehr Last. Der Server geht schneller zu Grunde.
Donnerstag, 18. Januar 2007 14:43
Ich möchte mal behaupten, dass die Funktion 10 mal weniger Last erzeugt als eine DB Abfrage für einen Captcha.
Donnerstag, 18. Januar 2007 21:29
Schlechte Möglichkeit, meiner Meinung nach. Denn auch wenn es unwahrscheinlich ist, so kann es doch passieren, dass jemand die Seite am 31.01. um 23:50 aufruft und am 01.02. um 00:02 nen Kommentar schreiben möchte - der dann leider ungültig ist.
Die wahrscheinlich beste aber auch komplexesten Methoden bietet SpamKarma. Das arbeitet mit JS, dynamischen Feldnamen und noch vielem mehr, ohne dabei normale Benutzer zu behindern - zumindest ist mir das noch nicht untergekommen. Und selbst wenn ein echter Kommentar als Spam identifiziert wurde, kann er immer noch mit einem Captcha freigeschaltet werden.
Samstag, 3. Februar 2007 1:53
Alternative zu Captcha-Bildern
Lange Zeit haben uns die Captcha-Bildchen unter fast jedem Kommentarfeld verfolgt. Oft war auch für das menschliche Auge kaum erkennbar, welcher Satz oder welche Zeichen sich hinter der Grafik verstecken sollten.Seit einigen Wochen setzen immer mehr Bl
Freitag, 9. Februar 2007 21:56
Der Gedanke ist gut, dennoch unsicher und überhaupt fraglich, dass es was bringt.
Denn ein Bot (was auch die meisten wahrscheinlich tun) kann einfach vorher das Formular besuchen und den Quelltext nach dem “ID” suchen lassen…
Montag, 12. Februar 2007 21:21
[…] Spam ist schlimm - keine Frage. Aber sind die kleinen bunten Bildchen wirklich besser? Für den Webmaster sicherlich schon, bloß für den Internetuser wohl im seltensten Fall. Sascha vom Website Spy Blog hatte da eine nette Idee für eine Captcha Alternative und zwar einfach die Formularfeldernamen dynamisch über das aktuelle Datum zu generieren. Diese Methode hat aber das Problem, dass es nicht funktionieren würde wenn ein User die Seite um 23:59:59 aufrufen würde und dann nach Mitternacht das Formular abschicken würde. Der Ansatz gefällt mir schon recht gut, bloß habe ich da einer (vielleicht) bessere Idee: […]
Dienstag, 25. September 2007 17:34
Das Problem “kurz vor 24 Uhr” lässt sich einfach lösen, indem immer zwei Felder übermittelt werden (gestern und heute). Wenn dann mindestens einer übereinstimmt, hat man immer noch die Sicherheit wie bisher und es ist praktisch unmöglich, dass ein (legaler) Post in aktzeptiert wird.
Mittwoch, 24. Oktober 2007 22:16
Auf meiner Website findet ihr ein Tutorial, welches eine ähnliche, noch viel sicherere Methode zum Schutz vor Spam vorstellt: Allen Formularfeldern werden täglich neue, verschlüsselte Namen zugewiesen. Verbunden mit einer Plausibilitätsprüfung (z.B. auf gültige E-mail), kommt da kein Bot mehr durch.
Das Tutorial:
http://www.christosoft.de/?page=tutorials%2FAntispam
Das Problem mit dem 24 Uhr Post berücksichtigt meine Lösung auch.
Donnerstag, 7. Februar 2008 23:43
Hey! Klasse Idee muss ich sagen!
Bisher habe ich immer eine Captcha-Grafik verwendet, einfach weil mir das am sichersten schien. Ich werd Deine Idee gleich mal ausprobieren.
Eine andere Idee, die ich von einem Freund habe:
Auf der Website steht einfach ein Text, z.B. Bitte gib drei a’s, ein b und 2 z’s hintereinadner ein.
Diesen Text kann man dann beliebig zusammenwürfeln, jeder Mensch versteht ihn und weiß, was zu tun ist, und der Text, der dann eingegeben soll wird von einem Skript generiert, was ihn gleichzeitig in einer Datenbank speichert, mit Session-ID, damit Verwechslungen ausgeschlossen werden. Auch daran dürften sich Spam-Bots ihre Zähne ausbeißen.
Vielleicht ist das ganze jetzt ein wenig schlecht ausgedrückt, aber ich denke man weiß, was gemeint ist.
Gruß,
Morten
Montag, 8. Dezember 2008 2:11
[…] Eine gute Möglichkeit dies zu erweitern wird auf website-spy.de erläutert. Der Vorschlag hier lautet dem Formular einen zusätzlichen, dynamischen Wert hinzuzufügen, da die meisten Spam-Bots direkt die Post-Daten an die Datei senden die den Eintrag speichert. Als Beispiel wird das aktuelle Datum und ein Zufallswert genannt. Etwas sinnvoller wäre hier ein md5-Hash des Datums und der Zufallszahl, da dies für Spammer wesentlich schwerer zu rekonstruieren ist. […]
Mittwoch, 2. September 2009 10:47
Da ist diese methode hier http://1ngo.de/web/captcha-spam.html besser, in der wird einfach ein zusätzliches formular feld genommen, per CSS auf hidden gesetzt - spammer füllen generell gern etwas aus und wenn in diesem feld ein wert drin ist, ist es spam ..für den normalen user nicht sichtbar (es sein denn er hat kein CSS , dafür ist dann der text auch da der dem user mitteilt hier nix eintragen)