Über das Umfragensystem der Pforzheimer Zeitung habe ich mich ja schon vor einigen Tagen köstlich amüsiert. Höchste Eisenbahn also, das Ding mal etwas näher anzuschauen, wie denn so die Abwehr von Missbrauchversuchen aussieht.
Denn auch wenn ein Voting-System an sich relativ einfach ist – man muss halt ein Script haben, dass verschiedene Zähler auf Benutzerinteraktion korrekt um eine Stelle nach oben verschiebt und das Ergebnis auf Knopfdruck anzeigen – muss es vor allem eine Sache können: Wiederholte Stimmenabgaben erkennen und verhindern. Online-Umfragen sind schon per default weit von jeglicher Repräsentation entfernt, da will man sich nicht gleich von jedem Deppen, der die Zurück-Funktion im Browser entdeckt hat, die Umfrage gleich von Anfang an ruinieren lassen.
Es gibt da zwei logische Ansätze: Client-seitige und server-seitige Prüfung. Erstere ist einfach, weil man den Benutzer gleich bei der Interaktion erwischen kann, beispielsweise per JavaScript, Cookies und AJAX-Abfragen, letzteres ist jedoch erheblich fundierter, weil man auf dem Server beispielsweise IP-Adressen, Browserkennungen, eindeutige Session-ID etc. mitloggen und diese nach Stimmabgaben sperren kann. Idealerweise baut man sich aus beiden Ansätzen ein System zusammen. Empfehlungen, Anleitungen und Beispiel-Scripte gibt es wohl in jedem Handbuch für Webdeveloper. Das System, das die Pforzheimer Zeitung einsetzt ist, mit Verlaub, dumm wie ein Päckchen ATA, denn es setzt nur auf einen Cookie-Check.
Ist in einer Seite das Umfragemodul eingebunden, prüft ein erstes Script zunächst einmal, ob das Speichern von Cookies im besuchenden Webbrowser möglich ist. Das macht es durch das Setzen eines Cookies namens „PZ_Allow_Survey_XXX“ („XXX“ steht hierbei für eine Zahl, die die Umfrage kennzeichnet). Dieser Cookie verschwindet nach Schließen des Webbrowsers übrigens auch wieder sang- und klanglos, weil seine Gültigkeit in die Vergangenheit datiert ist und Cookies in so einem Fall nach Sitzungsende des Webbrowsers gelöscht werden müssen.
Der Besucher kann nun an der Umfrage teilnehmen, also den passenden Radiobutton auswählen und auf „Absenden“ drücken. Die Übertragung erfolgt hierbei per AJAX im Hintergrund, so dass die Seite komfortablerweise nicht neu geladen werden muss. Hat er nun seine Stimme abgegeben, setzt das Votingscript einen weiteren Cookie namens „PZ_Survey_XXX“ mit einer Gültigkeit von etwa fünf Monaten in die Zukunft. Das ist dann der Cookie, den das Script zum Abstimmen sucht; findet er dieses Cookie, lässt es die Stimmabgabe nicht zu. So lange, bis eben das letztere Cookie schlicht gelöscht wird. Und das geht zum Beispiel beim Firefox kinderleicht, in dem man bei der Cookie-Suche lediglich „pz-news“ eingibt und auf den Löschbutton klickt. Fertig. Und weil man im Firefox eleganterweise das Fenster zum Verwalten von Cookies schön neben das Browser-Fenster drapieren kann, muss man auch gar nicht so viel herumklicken.
Die wirklichen Noobs würden sich natürlich ein hübsches Batchscript schreiben und den Cookie-Besitz schlicht über die die HTTP-Anfrage faken. Solche pupsigen Sachen sind dann aber nichts mehr für Nerds, das ist schlicht unter unserer Würde. 🙂
Warnung: Reißt euch zusammen und haltet eure Griffel weg.
Schreibe einen Kommentar