de.comp.lang.php.* FAQ

25.1. Wie kann ich eine schummelsichere Abstimmung codieren?

Keywords: Abstimmung | Vote | Poll | Wahl | Umfrage

Antwort von Kristian Köhntopp

Man kann keine schummelsichere Abstimmung im Web realisieren, die nicht unfair berechtigte Abstimmende ausschließt, außer man treibt sehr großen Aufwand.

Typische Schutzmechanismen, die jedoch nur Pseudosicherheit geben, sind: Die Seite nimmt Parameter per POST, prüft den Referer und versucht einen Cookie zu setzen. Wer den Cookie hat, kann nicht mehr abstimmen. Zum Mogeln muss man der Seite also die richtigen Parameter aus dem Formular mit einem POST füttern, darf den Referer nicht vergessen und darf den Cookie nicht annehmen. Das war alles.

Eine etwas kompliziertere Absicherung wäre ein Formular, das als hidden-Parameter eine Challenge hat, die auch auf dem Server als Session-Variable verbleibt. Ein Abstimmungsergebnis wird dann für die aktuelle Session nur angenommen, wenn die richtige Challenge mit in den Parametern ist. Das macht das Schummeln per Script ein wenig schwieriger, aber nicht unmöglich (mit LWP in Perl oder libwww in C problemlos möglich, mit PHP ein Code mit den preg_*-Funktionen.

Mit SSL-Browser-Zertifikaten auf der Clientseite wäre es noch schwieriger zu fälschen, aber da gelangt man langsam in Regionen, wo es für den Wahlveranstalter wirklich teuer wird.

Auf der Basis der IP-Nummern kann man nicht arbeiten, da viele Benutzer dieselbe IP-Nummer zu haben scheinen, wenn sie über Proxy-Server hereinkommen oder Benutzer auf einem Mehrbenutzer-Rechner sind (unfairer Ausschluss). Andererseits ist es für einen geübten Hacker oder einen Provider sehr leicht, von einer ganzen Reihe unterschiedlicher IP-Nummern mehrfach abzustimmen.

Valid HTML 4.01! Valid CSS!

25.1. Wie kann ich eine schummelsichere Abstimmung codieren?
http://www.php-faq.de/q/q-scripte-abstimmung.html
Archiv der de.comp.lang.php-FAQ Dies ist eine Archivseite von 2008 und wurde seitdem nicht geändert. Das dclp-FAQ-Team