Skip to content

Mehrfachabstimmung und Missbrauchsschutz ​

Dedup-Strategien ​

Die Einstellung Mehrfachteilnahme verhindern (settings.dedupStrategy der Umfrage) bestimmt, woran PollYou wiederholte Antworten erkennt. Erkennt der Server eine Wiederholung, antwortet der Sitzungsstart mit 409 {code: "already_answered", results} und das Embed zeigt „Bereits teilgenommen“ (mit Ergebnissen, falls sichtbar).

StrategieErkennungGespeichertGrenzen
nonekeine––
sessionnur im Browser: das Embed merkt sich abgeschlossene Umfragen–Browserdaten löschen genügt
devicedas Embed erzeugt einmalig ein zufälliges Geräte-Token (localStorage) und sendet es als deviceTokenHash dev:<hmac> je Umfrageanderer Browser/privater Modus; ohne Token keine Prüfung
ip_hashIP-Adresse (Standard)Hash ip:<hmac> mit Tagessalzgemeinsame Adressen (Büro, Mobilfunk) zählen als eine; Sperre mindestens 24 h, höchstens 48 h
identitysub des Identitäts-Tokens – eine Antwort pro Nutzer Ihrer AnwendungHash id:<hmac> je Umfrageohne gültiges Token 403 identity_required
loginvorbereitet für PollYou-Konten der Befragten–noch nicht verfügbar: Sitzungen enden mit 403 login_required

Was das Embed im Browser speichert ​

StrategieBrowser-Speicher
none, identitynichts (bei identity können sich mehrere Nutzer einen Browser teilen)
sessionsessionStorage: pollyou:done:<publicId> nach dem Absenden, bis der Tab geschlossen wird
devicelocalStorage: pollyou:device (zufällige Kennung, eine pro Browser und einbettender Website, für alle Umfragen) und pollyou:done:<publicId>
ip_hashlocalStorage: pollyou:done:<publicId> (zeigt Wiederkehrenden sofort „Bereits teilgenommen“; entscheidend bleibt der Server)
identity ohne Tokennichts; das Embed zeigt sofort „Bitte melden Sie sich an …“ statt der Fragen

Die Kennung von device wird nur für Umfragen mit dieser Strategie angelegt und nur als Hash gespeichert. Ohne localStorage (privater Modus, blockierter Speicher) gilt eine Kennung nur für die aktuelle Seite.

Geräte-Kennung und TTDSG/ePrivacy ​

Die Strategie device speichert eine Kennung im Endgerät der Befragten und liest sie wieder aus. Nach Art. 5 Abs. 3 der ePrivacy-Richtlinie – in Deutschland § 25 TDDDG (bis Mai 2024 TTDSG) – ist das nur mit Einwilligung zulässig, es sei denn, es ist für einen ausdrücklich gewünschten Dienst unbedingt erforderlich. Ob die Erkennung von Mehrfachteilnahmen darunter fällt, ist nicht abschließend geklärt. Als Betreiber der einbettenden Website entscheiden Sie das; im Zweifel

  • binden Sie die Umfrage erst nach Einwilligung ein (z. B. über Ihr Consent-Banner) oder
  • wählen Sie session (nur Sitzungsspeicher), ip_hash (ohne Speicherung im Browser erforderlich) oder identity (für angemeldete Nutzer).

Das Dashboard zeigt bei device einen entsprechenden Hinweis. Die Einträge pollyou:done:<publicId> der anderen Strategien dienen nur der Anzeige („Bereits teilgenommen“) und enthalten keine Kennung.

Der frühere Wert cookie heißt jetzt device. Die API nimmt cookie noch für eine Version an und speichert ihn als device; bestehende Umfragen wurden umgestellt.

Keine IP im Klartext: Die IP-Adresse wird nur im Arbeitsspeicher verwendet. ip_hash nutzt ein Salz pro Kalendertag (UTC), das täglich neu erzeugt wird; Salze älter als gestern löscht der Befehl app:collect:rotate-salts (läuft täglich). Danach lassen sich die Hashes dieser Tage keiner Adresse mehr zuordnen – auch nicht mit dem Server-Secret.

Missbrauchsschutz ​

Verdächtige Antworten werden angenommen, aber markiert (response.flagged_reason). Sie bleiben gespeichert, zählen aber weder in den öffentlichen Ergebnissen noch für das Antwortlimit. Bots erfahren so nicht, woran sie erkannt wurden. In der Antworten-Tabelle lässt sich eine Markierung prüfen und aufheben (siehe Auswertung → Einzelne Antworten).

SchutzWirkung
Rate-Limits je Adresseje gehashter IP und Umfrage: 300 Lese-, 60 Schreib-, 120 Ereignis-Anfragen pro Minute → 429 mit Retry-After
Rate-Limit je OrganisationSitzungsstarts und Abschlüsse pro Minute über alle Umfragen und Adressen, je nach Plan (siehe Durchsatz je Plan) → 429
HoneypotEin für Menschen unsichtbares Formularfeld website (visuell versteckt, aria-hidden, tabindex=-1, autocomplete=off), das Bots gern ausfüllen. Ist es im Sitzungsstart oder Abschluss gefüllt, wird die Antwort als honeypot markiert.
MindestbearbeitungszeitUmfragen mit mehr als einer Frage, die schneller als COLLECT_MIN_COMPLETION_MS (Standard 2000 ms) nach dem Sitzungsstart abgeschlossen werden → too_fast. Einzelfragen (Polls) sind ausgenommen, weil die Sitzung erst mit der Antwort beginnt.
Captcha (optional)Einstellung captcha der Umfrage: Der Sitzungsstart braucht eine gelöste ALTCHA-Aufgabe von GET /api/collect/captcha im Feld captcha, sonst 403 captcha_required. Proof-of-Work ohne Tracking; das Embed löst sie während der ersten Antwort (WebCrypto in Häppchen, ohne die Seite zu blockieren).
Spitzen-ErkennungNach jedem Abschluss (asynchron), siehe Spitzenerkennung: mehr als 10 Abschlüsse pro Minute von einer gehashten IP in einer Umfrage → ip_spike; während einer Antwortspitze der Umfrage schon ab dem dritten Abschluss einer Adresse pro Minute → survey_spike.

Spitzenerkennung ​

Eine Umfrage, die viral geht, bekommt plötzlich sehr viele Antworten – genau wie eine Umfrage, die von einem Skript geflutet wird. Die Erkennung unterscheidet beides an der Verteilung auf Adressen: Viele verschiedene Menschen antworten je einmal, ein Angriff kommt von einer oder wenigen Adressen mit vielen Antworten.

Nach jedem Abschluss betrachtet PollYou die Minute davor:

  1. Spitze einer Adresse: mehr als 10 Abschlüsse derselben (gehashten) IP-Adresse in dieser Umfrage → ip_spike.
  2. Antwortspitze der Umfrage: Die Umfrage ist in einer Spitze, wenn ihre Abschlüsse der letzten Minute beide Schwellen überschreiten:
    • das Minimum pro Minute – die Einstellung Spitzenerkennung ab der Umfrage oder, wenn leer, der Wert des Plans (siehe unten);
    • das Zehnfache der Grundlast. Die Grundlast ist der größere Wert aus dem Durchschnitt pro Minute der vorangegangenen Stunde und den Abschlüssen der Minute davor. Wächst der Verkehr von Minute zu Minute um weniger als das Zehnfache, wird er so selbst zur Grundlast – eine Umfrage, die sich hochschaukelt, gilt nach kurzer Zeit nicht mehr als Spitze.
  3. Während einer Spitze wird nur markiert, was von einer Adresse mehr als zweimal pro Minute kommt (survey_spike). Wer einmal antwortet, zählt immer.

Beispiel: Eine Umfrage ohne Vorgeschichte steigt innerhalb von zwei Minuten auf 10 Antworten pro Sekunde (600 pro Minute), fast alle von unterschiedlichen Adressen. Früher wurden dabei rund 86 % der Antworten als survey_spike aussortiert; jetzt nur Antworten von Adressen, die in der Anfangsphase mehrfach pro Minute antworten (im Test unter 1 %). 40 Adressen, die in einer Minute je 9 Antworten schicken (unter der Grenze pro Adresse), werden dagegen ab der dritten Antwort je Adresse markiert.

Einstellung pro Umfrage: Unter Einstellungen → Spitzenerkennung ab (Antworten pro Minute) lässt sich das Minimum der Umfrage festlegen (settings.spikeMinimumPerMinute): leer = Wert des Plans, 0 = Antwortspitzen der Umfrage nicht erkennen (die Grenze von 10 pro Adresse gilt weiter), ein kleinerer Wert = früher prüfen.

Hinweis im Dashboard: Hat der Missbrauchsschutz mehr als 10 % der (mindestens 20) abgeschlossenen Antworten der letzten 24 Stunden markiert, zeigen die Reiter Übersicht und Antworten der Auswertung einen Hinweis mit dem Anteil je Grund (GET /api/surveys/{id}/responses/flag-summary). Von dort geht es zur Liste mit den markierten Antworten, wo sich Markierungen einzeln oder gesammelt aufheben lassen („Wieder einbeziehen“), und zur Einstellung der Umfrage. Aufgehobene Markierungen fließen sofort in alle Auswertungen und Ergebnisse ein.

Durchsatz je Plan ​

PlanSitzungsstarts + Abschlüsse pro Minute (Organisation)≈ Abstimmungen pro SekundeSpitzenerkennung ab (pro Minute und Umfrage)
Standard24.0002001.500
Intern60.0005003.000

Eine Abstimmung besteht aus zwei Schreibzugriffen (Sitzungsstart und Abschluss). Das Limit gilt für alle Umfragen der Organisation zusammen (gleitendes Fenster von einer Minute) und schützt die Plattform; ein Planwechsel gilt sofort. Kundinnen und Kunden sind auf Standard, der interne Plan ist PollYou selbst vorbehalten (siehe Preise und Guthaben).

Was Befragte bei 429 sehen: Das Embed wiederholt den Abschluss automatisch mit wachsendem Abstand (bis zu zehn Versuche) und zeigt währenddessen den Dank mit dem Hinweis „Gerade ist viel los. Ihre Antwort wird gleich gesendet.“ (offline: „Sie sind offline …“). Erst wenn alle Versuche scheitern, kehrt es zum Formular mit „Ihre Antwort konnte nicht gesendet werden“ zurück. Der Text lässt sich wie alle Embed-Texte mit PollYou.registerLocale(locale, { busy: '…' }) ersetzen.