Alle Artikel

Spamschutz für Webformulare – ohne Cookies und ohne ausländische CAPTCHA-Dienste

Veröffentlicht

Jedes Kontaktformular zieht Spam an. Die übliche Antwort ist ein CAPTCHA eines großen Anbieters. Es kostet Besucher Zeit, setzt oft Cookies und lädt Skripte von Servern im Ausland – nach georgischem Recht kann das eine genehmigungspflichtige Datenübermittlung sein (mehr dazu).

Wir schützen unsere Formulare anders: mit ALTCHA, einem Proof-of-Work-Verfahren, auf unserem eigenen Server.

Rechenaufgabe statt Bilderrätsel

Beim Laden des Formulars erhält der Browser eine kleine Rechenaufgabe und löst sie im Hintergrund, während der Besucher das Formular ausfüllt. Niemand muss Ampeln anklicken oder verzerrte Buchstaben abtippen. Für eine einzelne Nachricht ist der Aufwand verschwindend gering; wer Tausende Nachrichten verschickt, zahlt ihn tausendfach. Den Server kostet die Prüfung einer Lösung fast nichts.

Unser ALTCHA-Dienst

Wir haben rund um das offene ALTCHA-Format einen selbst gehosteten Dienst gebaut und als Open Source veröffentlicht. Er schützt beliebig viele Websites zugleich und wird in einer kleinen Weboberfläche verwaltet:

  • Signierte Aufgaben: Jede Aufgabe ist signiert (HMAC), an die Website gebunden, für die sie ausgestellt wurde, und genau einmal gültig – auch über Neustarts hinweg.
  • Formulare ohne Backend: Der Dienst schickt eine geprüfte Einsendung per E-Mail an den Empfänger der Website; eine statische Website braucht keinen eigenen Servercode.
  • Newsletter-Anmeldungen: Geprüfte Anmeldungen gehen an die Newsletter-Liste in Notifuse, das die Double-Opt-in-Mail verschickt.
  • Eigenes Backend: Anwendungen mit eigenem Backend prüfen die Lösung über eine Schnittstelle.
  • Schutz in mehreren Schichten: Ratenbegrenzung je Client und je Website, ein Honigtopf-Feld und eine strenge Prüfung, woher eine Anfrage kommt.
  • Datenschutz: keine Cookies, kein Zustand im Browser, keine Datei-Uploads.
  • Betrieb: Statistiken in der Weboberfläche, Prometheus-Metriken, eine Zustandsprüfung und alle Daten in einer einzigen SQLite-Datei.

Auch das Widget liefert der Dienst selbst aus – auf Englisch oder mit allen seinen 68 Sprachen.

Zwei Zeilen in der Seite

<script type="module" src="https://altcha.example.com/widget.js"></script>
<form action="https://altcha.example.com/submit" method="post">
  <input name="email" type="email" required>
  <textarea name="message" required></textarea>
  <altcha-widget challenge="https://altcha.example.com/challenge"></altcha-widget>
  <button type="submit">Send</button>
</form>

Es gibt keinen Build-Schritt und kein Paket zu installieren; dieselben Zeilen funktionieren in handgeschriebenem HTML, in Astro und in Angular.

Im Einsatz

Die Kontaktformulare und Newsletter-Anmeldungen auf esn.ge, epicsoft.one und unseren Verkaufsseiten für Domains laufen über diesen Dienst.

Der Quellcode liegt auf GitLab und GitHub, das Abbild auf Docker Hub, unter der MIT-Lizenz. Das Projekt steht in keiner Verbindung zum ALTCHA-Projekt; es nutzt dessen MIT-lizenziertes Widget und dessen Bibliothek.

Gern richten wir den Dienst auch für Ihre Website ein.

Bereit für den nächsten Schritt?

Es gab nie einen besseren Zeitpunkt, um anzufangen. Erzählen Sie uns von Ihrem Projekt.

Kontakt aufnehmen