CAPTCHAs barrierefrei gestalten oder sinnvoll ersetzen
A11Y
WCAG
Barrierefreiheit · CAPTCHA · WCAG · Bot-Schutz
CAPTCHAs barrierefrei gestalten oder sinnvoll ersetzen
Bot-Schutz ohne Ausgrenzung

Verzerrte Text-CAPTCHAs verhindern nicht nur Bots, sondern schließen blinde, sehbehinderte, kognitiv beeinträchtigte und motorisch eingeschränkte Menschen zuverlässig von Formularen aus. Dieser Artikel zeigt, warum unsichtbares Risiko-Scoring, Honeypot-Felder und Proof-of-Work-Verfahren wirksamer und gleichzeitig barrierefreier sind als klassische visuelle Rätsel.

17 Min. Lesezeit WCAG 2.2 · reCAPTCHA · hCaptcha · Honeypot Hyvä Theme · Magento 2 · Formulare

1. Warum klassische CAPTCHAs eine Barriere sind

Das klassische CAPTCHA mit verzerrtem Text auf verrauschtem Hintergrund wurde erfunden, um Menschen von Maschinen zu unterscheiden. Für sehende, kognitiv unbeeinträchtigte Nutzer ist die Aufgabe lästig, aber lösbar. Für blinde Nutzer, die auf einen Screenreader angewiesen sind, ist ein reines Bild ohne brauchbaren Alternativtext schlicht unlösbar: Der Screenreader kann verzerrte Buchstaben in einer Rastergrafik nicht erkennen, und ein generisches alt="captcha" hilft niemandem weiter. Menschen mit Sehbehinderung, die stark vergrößern oder wenig Kontrastwahrnehmung haben, scheitern ebenfalls an absichtlich verrauschten Zeichen.

Auch kognitive Beeinträchtigungen spielen eine zentrale Rolle: Legasthenie, Aufmerksamkeitsstörungen oder Gedächtniseinschränkungen erschweren das schnelle Erkennen und Abtippen verzerrter Zeichenfolgen erheblich. Menschen mit motorischen Einschränkungen, die per Sprachsteuerung oder Schalter-Eingabe arbeiten, benötigen für dieselbe Aufgabe ein Vielfaches der Zeit, während viele CAPTCHA-Implementierungen bereits nach wenigen Minuten ablaufen. Studien zur CAPTCHA-Erfolgsrate zeigen wiederholt, dass selbst durchschnittliche sehende Nutzer nur einen Teil der Rätsel im ersten Versuch lösen. Für Menschen mit Behinderung sinkt diese Quote drastisch, in vielen Fällen praktisch auf null.

Das eigentliche Problem ist konzeptionell: Ein CAPTCHA, das auf visueller Mustererkennung beruht, prüft nicht „Mensch oder Maschine", sondern „kann diese Person ein bestimmtes visuelles Rätsel unter Zeitdruck lösen". Das ist eine andere Frage, und sie diskriminiert systematisch genau die Nutzergruppen, die durch das Bundesteilhabegesetz, die BITV 2.0 und den European Accessibility Act ausdrücklich geschützt werden sollen.

2. WCAG-Anforderungen an CAPTCHAs

Die Web Content Accessibility Guidelines (WCAG) 2.2 adressieren CAPTCHAs nicht mit einem eigenen isolierten Erfolgskriterium, aber mehrere bestehende Kriterien greifen direkt. Erfolgskriterium 1.1.1 (Nicht-Text-Inhalt) verlangt eine Textalternative, die den Zweck erfüllt, was bei einem reinen visuellen Rätsel per Definition unmöglich ist: Eine Textalternative, die das Rätsel lösbar macht, würde auch Bots die Lösung liefern. Genau dieser Widerspruch ist der Grund, warum die WCAG in einer eigenen Ausnahmeregelung festhält, dass für CAPTCHAs mindestens zwei unterschiedliche Modalitäten angeboten werden müssen, etwa visuell und akustisch, damit Menschen mit einer bestimmten Beeinträchtigung nicht kategorisch ausgeschlossen sind.

Erfolgskriterium 2.1.1 (Tastatur) verlangt vollständige Bedienbarkeit ohne Maus, was viele ältere CAPTCHA-Widgets mit Drag-and-Drop-Puzzles verletzen. Erfolgskriterium 2.2.1 (Zeitbegrenzung einstellbar) betrifft CAPTCHAs, die nach kurzer Zeit ablaufen und keine Verlängerung anbieten. In der Praxis bedeutet das: Ein CAPTCHA, das WCAG-konform sein soll, braucht zwingend eine Audio-Alternative, uneingeschränkte Tastaturbedienung, ausreichend Zeit oder eine Verlängerungsoption, und im Idealfall verzichtet es ganz auf eine Aufgabe, die der Nutzer aktiv lösen muss. Die BITV 2.0 als deutsche Umsetzung der WCAG für öffentliche Stellen macht diese Anforderungen für Behördenwebsites verpflichtend, der European Accessibility Act zieht ab Juni 2025 weite Teile des E-Commerce nach.

3. Unsichtbare Alternativen: Risiko-Scoring statt Rätsel

Der wirksamste Weg, das Grundproblem zu lösen, ist der Verzicht auf eine sichtbare Aufgabe. Moderne risikobasierte CAPTCHAs wie Google reCAPTCHA v3 oder hCaptcha Enterprise analysieren im Hintergrund Verhaltenssignale: Mausbewegungen, Tippgeschwindigkeit, Zeitverhalten zwischen Formularfeldern, Browser-Fingerabdruck und IP-Reputation. Aus diesen Signalen berechnet der Dienst einen Risiko-Score zwischen 0 und 1, den die Anwendung serverseitig auswertet. Niedrige Scores lassen die Anfrage unbehelligt durch, verdächtige Scores können ein zusätzliches, aber seltenes Fallback-Rätsel auslösen oder die Anfrage in eine manuelle Prüfung schicken.

Der entscheidende Vorteil aus Sicht der Barrierefreiheit: Die überwiegende Mehrheit der Nutzer, unabhängig von einer Behinderung, sieht überhaupt kein Rätsel. Wer keine Maus benutzt oder untypische Tippmuster hat, weil er assistive Technologie einsetzt, bekommt zwar tendenziell einen höheren Risiko-Score, löst damit aber im schlechtesten Fall ein zusätzliches Audio- oder Checkbox-Fallback aus, statt komplett blockiert zu werden. Wichtig ist, dieses Fallback selbst wieder barrierefrei zu gestalten, sonst verschiebt sich das Problem nur eine Ebene tiefer. reCAPTCHA v3 zeigt keine sichtbare Nutzerinteraktion mehr, muss aber datenschutzrechtlich sauber eingebunden werden, inklusive Einwilligung vor dem Laden des Skripts gemäß DSGVO und TTDSG.


<!-- Hyva phtml: unsichtbares Risiko-Scoring statt sichtbares Rätsel -->
<!-- Script wird erst nach Consent-Zustimmung geladen (DSGVO/TTDSG) -->
<div x-data="recaptchaForm()" x-init="init()">
  <form @submit.prevent="submitForm">
    <label for="email" class="block text-sm font-medium text-gray-700">
      E-Mail-Adresse
    </label>
    <input type="email" id="email" name="email" required
           class="mt-1 block w-full rounded-md border-gray-300">

    <!-- Kein sichtbares Captcha-Widget, Score läuft ausschließlich im Hintergrund -->
    <button type="submit" class="mt-4 bg-zinc-800 text-white px-4 py-2 rounded-md">
      Absenden
    </button>
  </form>
</div>

<script>
  function recaptchaForm() {
    return {
      init() {
        // reCAPTCHA v3 erst nach Consent laden, nie vorher
        window.addEventListener('consent-granted', () => this.loadScript());
      },
      loadScript() {
        const s = document.createElement('script');
        s.src = 'https://www.google.com/recaptcha/api.js?render=SITE_KEY';
        document.head.appendChild(s);
      },
      async submitForm(event) {
        const token = await grecaptcha.execute('SITE_KEY', { action: 'contact' });
        const hidden = document.createElement('input');
        hidden.type = 'hidden';
        hidden.name = 'g-recaptcha-response';
        hidden.value = token;
        event.target.appendChild(hidden);
        event.target.submit();
      }
    };
  }
</script>

4. Honeypot-Felder: einfacher Bot-Schutz ohne Nutzerinteraktion

Das Honeypot-Muster ist die einfachste barrierefreie Bot-Schutzmethode überhaupt, weil sie für Menschen komplett unsichtbar bleibt und keinerlei Interaktion erfordert. Ein zusätzliches Formularfeld wie <input type="text" name="website_url" aria-hidden="true" tabindex="-1" autocomplete="off" class="form-honeypot-field"> wird per CSS visuell und aus dem Accessibility-Baum entfernt, bleibt im HTML-Quellcode aber vorhanden. Einfache Bots, die das DOM automatisiert durchsuchen und alle Formularfelder ausfüllen, tragen dort typischerweise einen Wert ein. Wird das Feld serverseitig als ausgefüllt erkannt, verwirft die Anwendung die Anfrage stillschweigend oder markiert sie als Spam, ohne dem Bot eine Fehlermeldung zu liefern, die beim Anpassen helfen würde.

Wichtig für echte Barrierefreiheit ist die korrekte Versteckmethode: display: none oder visibility: hidden allein reichen aus, um das Feld für Screenreader zu verbergen, aber Autofill-Funktionen von Browsern respektieren diese Eigenschaften nicht immer zuverlässig und könnten das Feld versehentlich befüllen. Positionierung außerhalb des sichtbaren Bereichs kombiniert mit aria-hidden und tabindex="-1" ist zuverlässiger. Ein unauffälliger Feldname wie website_url statt honeypot erhöht zusätzlich die Trefferquote gegen Bots, die versuchen, Honeypots gezielt zu erkennen und zu umgehen. Honeypots ersetzen kein vollständiges Bot-Schutzsystem, sind aber eine wirkungsvolle erste Verteidigungslinie ohne jede Nutzerauswirkung und funktionieren sogar bei deaktiviertem JavaScript.


/* Accessible honeypot hiding technique.
   Invisible to sighted users, removed from the accessibility tree,
   but still present in the DOM so naive bots fill it in. */
.form-honeypot-field {
  position: absolute;
  left: -9999px;
  top: -9999px;
  width: 1px;
  height: 1px;
  overflow: hidden;
  opacity: 0;
}

/* Never use display:none or visibility:hidden alone.
   Some autofill engines still populate them, defeating the trap. */
.form-honeypot-field:focus {
  /* No visible focus style needed, the field is unreachable by tab */
  outline: none;
}

5. Proof-of-Work: Rechenkosten statt Rätsel

Proof-of-Work-Verfahren (auch als Hashcash-Ansatz bekannt) verlagern den Bot-Schutz von einer kognitiven Aufgabe auf eine reine Rechenaufgabe. Der Server schickt eine zufällige Zeichenkette mit einer Ziel-Schwierigkeit, etwa „finde einen Wert, dessen SHA-256-Hash zusammen mit der Zeichenkette mit vier Nullen beginnt". Der Client löst diese Aufgabe im Hintergrund per JavaScript, üblicherweise in wenigen hundert Millisekunden, ohne dass der Nutzer etwas davon bemerkt oder interagieren muss. Für einen einzelnen Nutzer ist der Rechenaufwand vernachlässigbar, für einen Bot-Betreiber, der zehntausende Formulare pro Minute abschicken will, summiert sich derselbe Aufwand zu spürbaren Serverkosten.

Der Charme dieses Ansatzes aus Barrierefreiheitssicht: Es gibt buchstäblich nichts zu sehen, zu hören oder zu lösen. Weder Screenreader noch Tastaturnavigation noch Zeitdruck spielen eine Rolle, weil die gesamte Prüfung im Hintergrund abläuft, während der Nutzer ganz normal das Formular ausfüllt. Anbieter wie Cloudflare Turnstile in seinem „managed"-Modus oder die quelloffene Anubis-Middleware kombinieren Proof-of-Work häufig mit zusätzlichen Verhaltenssignalen, um die Schwierigkeit dynamisch an das tatsächliche Risiko anzupassen. Ein Nachteil bleibt: Proof-of-Work setzt aktiviertes JavaScript voraus und benötigt auf sehr alten oder leistungsschwachen Geräten spürbar mehr Zeit, weshalb ein großzügiges Zeitfenster ohne harte Timeouts eingeplant werden sollte.


// Client-seitige Proof-of-Work-Berechnung über die Web Crypto API.
// Läuft vollständig im Hintergrund, keine Nutzerinteraktion nötig.
async function solveProofOfWork(challenge, difficulty = 4) {
  const target = '0'.repeat(difficulty);
  let nonce = 0;

  while (true) {
    const data = new TextEncoder().encode(challenge + nonce);
    const digest = await crypto.subtle.digest('SHA-256', data);
    const hashHex = Array.from(new Uint8Array(digest))
      .map((b) => b.toString(16).padStart(2, '0'))
      .join('');

    if (hashHex.startsWith(target)) {
      return { nonce, hash: hashHex };
    }
    nonce++;

    // Alle 500 Iterationen kurz Main Thread freigeben
    if (nonce % 500 === 0) {
      await new Promise((resolve) => setTimeout(resolve, 0));
    }
  }
}

// Beispielaufruf beim Absenden eines Formulars
async function submitWithProofOfWork(form, challenge) {
  const solution = await solveProofOfWork(challenge, 4);

  const hiddenField = document.createElement('input');
  hiddenField.type = 'hidden';
  hiddenField.name = 'pow_nonce';
  hiddenField.value = solution.nonce;
  form.appendChild(hiddenField);
  form.submit();
}

6. Audio-Alternative, wenn ein visuelles Rätsel unvermeidbar ist

Manchmal lässt sich ein sichtbares Rätsel nicht vollständig vermeiden, etwa weil ein Zahlungsdienstleister oder eine externe API eine bestimmte CAPTCHA-Lösung vertraglich vorschreibt. In diesem Fall verlangt WCAG explizit eine zweite Modalität, üblicherweise ein Audio-Rätsel mit gesprochenen Zeichen oder Zahlen, das über einen deutlich beschrifteten Button neben dem visuellen Rätsel erreichbar ist. Der Button muss per Tastatur fokussierbar sein, einen aussagekräftigen zugänglichen Namen wie „Audio-Alternative abspielen" tragen und die Wiedergabe darf nicht automatisch starten, um Nutzer nicht zu überraschen.

Wichtig ist, dass die Audio-Variante ein eigenständiges, unabhängig lösbares Rätsel liefert, nicht bloß die visuellen Zeichen vorliest, denn reines Vorlesen würde Screenreader-Nutzer wieder auf dieselbe Aufgabe zurückwerfen, die sie eigentlich umgehen sollten. Ein aria-live="polite"-Bereich sollte den Ladezustand und Fehler kommunizieren, etwa „Audio wird geladen" oder „Falsche Eingabe, neues Audio wurde generiert". Da auch Audio-CAPTCHAs Menschen mit Hörbehinderung oder Personen in lauten Umgebungen ausschließen können, sollte zusätzlich ein dritter Weg vorhanden sein: ein Link zu einem menschlichen Support-Kontakt, über den das Formular alternativ abgeschickt werden kann, etwa per E-Mail oder Telefon.


<!-- Barrierefreies visuelles CAPTCHA mit gleichwertiger Audio-Alternative -->
<fieldset>
  <legend class="text-sm font-medium text-gray-700">Sicherheitsabfrage</legend>

  <img src="/captcha/image/{{$block->getCaptchaId()}}"
       alt="Visuelles Sicherheitsrätsel, Alternative als Audio verfügbar"
       width="200" height="60">

  <button type="button"
          @click="playAudioCaptcha()"
          aria-describedby="captcha-audio-status"
          class="mt-2 text-sm text-zinc-700 underline">
    Audio-Alternative abspielen
  </button>

  <audio id="captcha-audio" preload="none"
         src="/captcha/audio/{{$block->getCaptchaId()}}"></audio>

  <p id="captcha-audio-status" class="sr-only" aria-live="polite" x-text="audioStatus"></p>

  <label for="captcha-response" class="block mt-3 text-sm font-medium text-gray-700">
    Zeichen aus Bild oder Audio eingeben
  </label>
  <input type="text" id="captcha-response" name="captcha_response"
         autocomplete="off" required
         class="mt-1 block w-full rounded-md border-gray-300">

  <p class="mt-2 text-xs text-gray-500">
    Alternativ ohne Rätsel absenden:
    <a href="mailto:kontakt@mironsoft.de" class="text-zinc-700 underline">kontakt@mironsoft.de</a>
  </p>
</fieldset>

7. CAPTCHA-Integration in Hyvä-Formularen umsetzen

Magento bringt mit dem Modul Magento_ReCaptchaUi bereits eine konfigurierbare CAPTCHA-Schicht mit, die pro Formular getrennt aktiviert werden kann: Kontaktformular, Login, Registrierung, Newsletter-Anmeldung und Checkout lassen sich unabhängig voneinander auf „Invisible reCAPTCHA" oder „reCAPTCHA v3" umstellen, statt auf das ältere, sichtbare Checkbox-Widget. In der Admin-Konfiguration unter Stores > Configuration > Security > Google reCAPTCHA lässt sich der Score-Schwellenwert pro Formular justieren, ohne Template-Code anzufassen. Für Hyvä-Themes ist wichtig, dass das reCAPTCHA-Skript CSP-konform über $hyvaCsp->registerInlineScript() eingebunden wird und nicht über ein hartkodiertes Inline-Script, das die Content Security Policy verletzt.

Für individuelle Formulare außerhalb der Standard-Magento-Module empfiehlt sich ein eigenes ViewModel, das den Honeypot- und Proof-of-Work-Status kapselt und per ArgumentInterface ins Template injiziert wird. Die Entscheidung, welches Verfahren für welches Formular greift, sollte zentral über system.xml konfigurierbar sein: Ein niedrigschwelliges Newsletter-Formular kommt oft mit einem reinen Honeypot aus, ein Registrierungsformular mit Zahlungsdaten rechtfertigt zusätzliches Risiko-Scoring. So bleibt der Aufwand proportional zum tatsächlichen Missbrauchsrisiko, statt pauschal überall dasselbe schwergewichtige Verfahren einzusetzen.


<!-- app/code/Mironsoft/Accessibility/etc/config.xml -->
<!-- Invisible reCAPTCHA v3 statt sichtbarem Checkbox-Widget pro Formular aktivieren -->
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Store:etc/config.xsd">
    <default>
        <recaptcha_frontend>
            <type_for>
                <contact_us>invisible</contact_us>
                <customer_login>invisible</customer_login>
                <customer_create>invisible</customer_create>
                <newsletter>invisible</newsletter>
            </type_for>
        </recaptcha_frontend>
        <recaptcha_frontend_invisible>
            <min_score>0.5</min_score>
        </recaptcha_frontend_invisible>
    </default>
</config>

8. Testen: Screenreader, Tastatur und assistive Technologien

Automatisierte Tools wie axe DevTools oder WAVE erkennen zuverlässig fehlende Alternativtexte oder fehlende Labels, können aber nicht beurteilen, ob ein CAPTCHA in der Praxis tatsächlich lösbar ist. Deshalb ist manuelles Testen mit echten assistiven Technologien unverzichtbar: NVDA oder JAWS unter Windows und VoiceOver unter macOS/iOS sollten das komplette Formular einschließlich CAPTCHA-Fallback durchlaufen, ohne dass der Screenreader an einer Stelle „Grafik" oder gar nichts ankündigt. Der Test sollte auch prüfen, ob Fehlermeldungen nach einer falschen CAPTCHA-Eingabe per aria-live oder Fokusverschiebung angekündigt werden, statt stillschweigend im Hintergrund zu erscheinen.

Ein zweiter Testdurchlauf gehört ausschließlich der Tastatur: Jedes interaktive Element, inklusive Audio-Button, Neu-laden-Button und Eingabefeld, muss per Tab erreichbar sein, in sinnvoller Reihenfolge, mit sichtbarem Fokusindikator. Zusätzlich lohnt ein Test bei 400 % Zoom-Stufe gemäß WCAG 1.4.10, um zu prüfen, ob das CAPTCHA-Widget bei starker Vergrößerung noch nutzbar bleibt oder abgeschnitten wird. Bei zeitbasierten Verfahren sollte geprüft werden, ob eine Verlängerung angeboten wird, bevor die Zeit abläuft, und ob diese Verlängerung selbst wieder per Tastatur und Screenreader erreichbar ist. Ein Testprotokoll mit konkreten Nutzerszenarien pro Behinderungsart deckt deutlich mehr auf als ein einzelner automatisierter Scan.

9. CAPTCHA-Verfahren im direkten Vergleich

Die folgende Übersicht stellt für typische Einsatzszenarien das riskante beziehungsweise unzugängliche Vorgehen dem empfohlenen barrierefreien Verfahren für Bot-Schutz gegenüber und zeigt, welcher konkrete Vorteil daraus entsteht.

Einsatzszenario Unzugänglich / riskant Empfohlenes Verfahren Vorteil
Kontaktformular Verzerrtes Text-CAPTCHA Honeypot + Risiko-Scoring Keine visuelle Aufgabe nötig
Login-Formular Sichtbares Checkbox-Widget Invisible reCAPTCHA v3 Kein zusätzlicher Klick nötig
Registrierung mit Vertragspflicht-CAPTCHA Nur visuelles Rätsel Rätsel + Audio + Support-Fallback Erfüllt WCAG-Anforderung an zwei Modalitäten
Zeitbegrenztes Rätsel Läuft nach 60 Sekunden ab Verlängerbar oder ohne Timeout Erfüllt WCAG 2.2.1
Formular ohne JavaScript Reines JS-Rätsel Honeypot als Basisschutz Funktioniert auch bei deaktiviertem JavaScript

In der Praxis lassen sich die Verfahren kombinieren: Honeypot und Proof-of-Work als unsichtbare Basisschicht, Risiko-Scoring als zweite Stufe für verdächtige Anfragen, und ein Audio- plus Support-Fallback nur für den seltenen Fall, dass ein sichtbares Rätsel vertraglich vorgeschrieben ist. Diese Kombination minimiert die Zahl der Nutzer, die überhaupt mit einer Aufgabe konfrontiert werden, und stellt gleichzeitig sicher, dass niemand kategorisch ausgeschlossen wird.

Mironsoft

Barrierefreiheits-Audits und WCAG-konforme Formulare für Magento- und Hyvä-Shops

Bot-Schutz, der niemanden ausschließt?

Wir prüfen eure bestehenden CAPTCHA-Implementierungen auf WCAG-Konformität und ersetzen unnötige visuelle Rätsel durch unsichtbares Risiko-Scoring, Honeypots und Proof-of-Work, ohne den Bot-Schutz zu schwächen.

Barrierefreiheits-Audit

CAPTCHA- und Formular-Analyse mit Screenreader- und Tastaturtests

Umsetzung

Invisible reCAPTCHA, Honeypot und Proof-of-Work in Hyvä-Formularen integrieren

WCAG-Konformität

BITV- und EAA-konforme Umsetzung mit dokumentierter Testabdeckung

10. Zusammenfassung

Verzerrte Text-CAPTCHAs lösen das falsche Problem: Sie prüfen visuelle Mustererkennung unter Zeitdruck statt echter Mensch-Bot-Unterscheidung, und schließen dabei blinde, sehbehinderte, kognitiv beeinträchtigte und motorisch eingeschränkte Nutzer systematisch aus. Unsichtbares Risiko-Scoring wie reCAPTCHA v3, Honeypot-Felder und Proof-of-Work-Verfahren lösen die eigentliche Aufgabe, Bots zu erkennen, ohne dass die überwiegende Mehrheit der Nutzer überhaupt eine Aufgabe zu Gesicht bekommt. Wo ein sichtbares Rätsel vertraglich unvermeidbar bleibt, schreibt WCAG zwingend eine gleichwertige zweite Modalität vor, typischerweise Audio, ergänzt um einen menschlichen Support-Fallback als dritte Ebene.

Der größte Hebel liegt in der konsequenten Kombination mehrerer leichter Verfahren statt eines einzigen schweren: Honeypot und Proof-of-Work als unsichtbare Basisschicht, Risiko-Scoring als zweite Eskalationsstufe, und nur im Ausnahmefall ein vollständiges CAPTCHA mit Audio-Alternative. Regelmäßige manuelle Tests mit Screenreadern, reiner Tastaturbedienung und starker Zoomstufe stellen sicher, dass diese Kombination in der Praxis tatsächlich für alle Nutzergruppen funktioniert, nicht nur auf dem Papier.

CAPTCHAs barrierefrei gestalten oder sinnvoll ersetzen, das Wichtigste auf einen Blick

Grundproblem

Verzerrte Text-CAPTCHAs schließen blinde, sehbehinderte und kognitiv beeinträchtigte Nutzer aus. WCAG verlangt mindestens zwei Modalitäten.

Unsichtbare Verfahren

Risiko-Scoring (reCAPTCHA v3), Honeypot-Felder und Proof-of-Work erkennen Bots, ohne den Nutzer je zu belasten.

Audio-Fallback

Wo ein visuelles Rätsel unvermeidbar bleibt, ist eine eigenständige Audio-Alternative plus Support-Kontakt Pflicht.

Testen

Screenreader, reine Tastaturbedienung und 400 % Zoom manuell testen, automatisierte Scans allein reichen nicht aus.

11. FAQ: CAPTCHAs barrierefrei gestalten

1Warum sind klassische CAPTCHAs eine Barriere?
Verzerrter Text kann von Screenreadern nicht erkannt werden und ist für sehbehinderte, kognitiv beeinträchtigte und motorisch eingeschränkte Menschen kaum lösbar. Das Verfahren prüft visuelle Mustererkennung, nicht echte Mensch-Bot-Unterscheidung.
2Was schreibt WCAG konkret zu CAPTCHAs vor?
Mindestens zwei unterschiedliche Sinnesmodalitäten, vollständige Tastaturbedienbarkeit und keine starre Zeitbegrenzung ohne Verlängerungsoption, abgeleitet aus den Erfolgskriterien 1.1.1, 2.1.1 und 2.2.1.
3Was ist unsichtbares Risiko-Scoring wie reCAPTCHA v3?
Ein Dienst analysiert im Hintergrund Verhaltenssignale und berechnet einen Risiko-Score zwischen 0 und 1, den die Anwendung serverseitig auswertet, ohne dass der Nutzer eine Aufgabe sieht.
4Wie funktioniert ein Honeypot-Feld?
Ein für Menschen unsichtbares Feld bleibt im HTML vorhanden. Bots füllen es automatisiert aus, wodurch die Anfrage serverseitig als Spam erkannt und verworfen wird.
5Was ist Proof-of-Work als Bot-Schutz?
Der Client löst im Hintergrund eine Rechenaufgabe. Für einen Nutzer dauert das Millisekunden, für massenhafte Bot-Anfragen summiert sich der Aufwand zu spürbaren Kosten.
6Wann brauche ich trotzdem eine Audio-Alternative?
Wenn ein sichtbares CAPTCHA vertraglich nicht vermeidbar ist. WCAG verlangt dann eine unabhängig lösbare zweite Modalität plus idealerweise einen Support-Fallback.
7Wie integriere ich barrierefreien Bot-Schutz in Hyvä-Formulare?
Über Magento_ReCaptchaUi pro Formular auf Invisible umstellen, Skripte CSP-konform via hyvaCsp einbinden, individuelle Logik über ein eigenes ViewModel kapseln.
8Wie teste ich CAPTCHA-Barrierefreiheit richtig?
Automatisierte Scans plus manuelle Tests mit NVDA, JAWS oder VoiceOver, reine Tastaturbedienung und ein Test bei 400 % Zoom sind notwendig.
9Ist hCaptcha barrierefreier als reCAPTCHA?
Beide bieten unsichtbare Modi mit Audio-Fallback. Entscheidend ist die konkrete Konfiguration, nicht der Anbieter selbst.
10Was tun, wenn ein Nutzer trotz aller Alternativen nicht durchkommt?
Ein sichtbarer Support-Kontakt wie E-Mail oder Telefon sollte immer als letzte Eskalationsstufe angeboten werden.