Umfrage darf nicht manipulierbar sein
Marco
- php
0 Felix Riesterer0 Marco
0 Kanne0 Sven Rautenberg0 Marco0 Cybaer0 Ingo Turski0 Cybaer
0 Jeena Paradies
Hallo,
habe eine Umfrage auf meiner Seite eingebaut, die aber anscheinend manipulierbar ist. Ich weiß aber nicht warum.
Es ist so, dass die Umfrage angezeigt wird (wenn das Cookie nicht gesetzt ist, welches gesetzt wird, wenn man schon abgestimmt hat) und man zwischen einer von mehreren Antwortmöglichkeiten wählen kann. Mittels Post-Variable wird die angeklickte Antwortmöglichkeit zur Frage und eine Zufallsvariable (wird auch in einer Sessionvariable gespeichert) an das auswertende Dokument übergeben.
Dort wird noch mal geprüft ob der User schon teilgenommen hat (mit dem gesetzten Cookie) und ob die übergebene Zufallsvariable mit der in der Session-Variable gespeicherten Zufallsavriable übereinstimmt. Ist dies der Fall, wird die Anzahl der Stimmen dieser Antwortmöglichkeit in der DB um 1 erhöht.
Bewusst ist mir, dass diese Umfrage mittels Cookie löschen manipulierbar ist, aber dort ist wohl noch eine Sicherheitslücke drin. Denn innerhalb weniger Minuten dutzende oder hunderte von Stimmen dazuzählen in dem immer wieder das Cookie gelöscht wird, halte ich für unwahrscheinlich. Da es keine Umfragen von besonderer Wichtigkeit sind, wird das wohl kaum einer machen.
Wer hat eine Idee wo der Fehler liegen könnte? Welche Möglichkeit gäbe es die Sicherheitslücke des "Cookie löschen" zu verhindern? IP-Adressen abgleichen hätte man doch das Problem das AOL-User die gleiche ausspucken, oder?
Wäre super, wenn ihr mir helfen könntet!
Grüße, Marco
Lieber Marco,
eines habe ich noch nicht verstanden... Was macht Dein Script, wenn ich keine Cookies zulasse?
Liebe Grüße aus Ellwangen,
Felix Riesterer.
Hallo Felix,
dann wird eine Meldung angezeigt, dass die Cookies nicht aktiviert sind und die Umfrage nur bei Aktivierung der Cookies startet.
Grüße, Marco
Sers,
IP-Adressen abgleichen hätte man doch das Problem das AOL-User die gleiche ausspucken, oder?
Hä? Was ist mit den AOL-User? Haben die alle die selbe IP oder wie?
Kanne
Moin!
IP-Adressen abgleichen hätte man doch das Problem das AOL-User die gleiche ausspucken, oder?
Hä? Was ist mit den AOL-User? Haben die alle die selbe IP oder wie?
Nicht nur. AOL setzt Proxy-Farmen ein. Das bedeutet: Unterschiedliche AOL-User haben die gleiche IP, und jeder einzelne AOL-User hat bei aufeinanderfolgenden Requests wahrscheinlich immer wechselnde IPs.
Mechanismen, die darauf bauen, dass ein User über die Zeitdauer einer Session seine IP nicht wechselt, sind deshalb zum Scheitern verurteilt.
- Sven Rautenberg
Hallo,
ja, klingt logisch. Nur, wie kann ich dem ganzen in anderer Art und Weise Sicherheit verleihen?
Grüße, Marco
Hi,
Nicht nur. AOL setzt Proxy-Farmen ein. Das bedeutet: Unterschiedliche AOL-User haben die gleiche IP, und jeder einzelne AOL-User hat bei aufeinanderfolgenden Requests wahrscheinlich immer wechselnde IPs.
BTW: Ich kenne IP-wechselnde User, bei denen die ersten 3 Oktetts gleich bleiben und nur das letzte Oktett wechselt. Muß man eigentlich (bei AOL oder sonst) mit Usern rechnen, bei deren IP mehr wechselt? Und wenn ja: Kann so etwas (relativ) "normale" Surfer betreffen, oder Surfer, die Anonymisierungssoftware verwenden?
Gruß, Cybaer
Hi,
BTW: Ich kenne IP-wechselnde User, bei denen die ersten 3 Oktetts gleich bleiben und nur das letzte Oktett wechselt. Muß man eigentlich (bei AOL oder sonst) mit Usern rechnen, bei deren IP mehr wechselt? Und wenn ja: Kann so etwas (relativ) "normale" Surfer betreffen
Ja, allerdings relativ selten. Bei unter 10% der AOL-User passiert so etwas schon mal:
Mozilla/4.0 (compatible; MSIE 6.0; AOL 9.0; Windows NT 5.1; SV1)
14:38:55 64.12.116.198
14:38:56 64.12.116.72
14:38:57 64.12.116.69
14:38:57 64.12.116.8
14:38:57 64.12.116.5
14:38:58 64.12.116.14
14:38:59 64.12.117.11
14:38:59 64.12.116.195
14:38:59 64.12.116.13
14:38:59 64.12.117.14
14:39:05 64.12.117.7
(anhand der netterweise auch übermittelten Referrer war es unzweifelhaft derselbe User)
Die Möglichkeiten der Manipulierung wurden ja schon genannt. Man kann lediglich _alle_ verhindern und somit eine Manipulation bestmöglichst verhindern. Zusätzlich bietet sich eine Zeitspanne an, die maschinelle Manipulationen erschwert.
freundliche Grüße
Ingo
Hi,
Ja, allerdings relativ selten. Bei unter 10% der AOL-User passiert so etwas schon mal:
Danke für den Auszug und die Schätzung! :-))
Gruß, Cybaer
Hallo,
Kennst du das Konsolenprogramm curl und for-Loops? Damit kann man sich so ein Script schreiben:
for (( i=0; i<10000; i++ ))
do
curl --cookie umfrage="noch nicht teilgenommen" http://example.com/umfrage?antwort=3
done
Das erhöht dann deine Umfrage zehn tausend mal, ohne dass man jedes mal den cookie von Hand aus dem Browser löschen muss.
Jeena
Hi,
nein, sagt mir nichts. Aber würde so nicht 10000 mal das entsprechende Skript aufgerufen werden? Dann müsste ja beim zweiten Durchlauf ein Stopp kommen, da das Cookie inzwischen gesetzt ist, oder nicht?
Wie kann ich so etwas verhindern??
Grüße, Marco
Hallo,
nein, sagt mir nichts. Aber würde so nicht 10000 mal das entsprechende Skript aufgerufen werden? Dann müsste ja beim zweiten Durchlauf ein Stopp kommen, da das Cookie inzwischen gesetzt ist, oder nicht?
Das Script speichert keine Cookies, kann aber beliebige Cookies senden (um dir z.B. vorzugaukeln, dass Cookies nicht deaktiviert sind.)
Wie kann ich so etwas verhindern??
Nicht.
Jonathan
Hallo,
hm....ok. Nur, es gibt doch "seriöse" Umfrage bei denen sowas schlimm wäre. Es muss doch irgendwie eine Möglichkeit geben so etwas zu verhindern, oder nicht? Gibt es denn einen Weg festzustellen, ob die Manipulation durch ein solches Tool erfolgt ist?
Grüße, Marco
Moin!
hm....ok. Nur, es gibt doch "seriöse" Umfrage bei denen sowas schlimm wäre. Es muss doch irgendwie eine Möglichkeit geben so etwas zu verhindern, oder nicht? Gibt es denn einen Weg festzustellen, ob die Manipulation durch ein solches Tool erfolgt ist?
Seriöse Umfragen, die z.B. ihre Userbasis befragen, haben für jeden User einen Account, man muß sich einloggen - und von daher ist es vollkommen egal, ob ein User nun einmal oder tausend Mal eine Antwort abschickt - er wird nur einmal gezählt.
Das verschiebt das Problem allerdings nur. Denn wie kontrolliert man, dass nicht ein Mensch tausend Accounts hat? Bei sehr großen Communitys dürfte das aufgrund der vermutlichen Irrelevanz dieser Fake-Accounts im Vergleich zur Gesamtzahl problemlos sein, bei kleineren Gemeinschaften hingegen, wo ein Faker 50% und mehr Stimmenanteil ergeben kann, wird das zum Problem. Da bliebe dann nur, statistische Methoden anzuwenden, um zumindest festzustellen, ob die Umfrage denn manipuliert wurde. Wenn Stimmen in kurzer Zeit hintereinander von derselben IP, aber mehreren Accounts kommen, ist wohl was faul.
Aber auch das kann man als Manipulator ja berücksichtigen.
- Sven Rautenberg
Hallo,
hm....ok. Nur, es gibt doch "seriöse" Umfrage bei denen sowas schlimm wäre. Es muss doch irgendwie eine Möglichkeit geben so etwas zu verhindern, oder nicht?
Es gibt zumindest Möglichkeiten sowas zu erschweren. Indem zu z.B. auf jeder Formularseite ne zufällige ID einbindest und die beim Absenden (auf dem Server) dann überprüfst. Aber auch die kann man dann recht problemlos mit wget o.ä. auslesen. Um das zu erschweren kannsst du die dann immer irgendwo anders abspeichern, anders benennen usw., aber verhindern kannst du auch damit nichts.
Gibt es denn einen Weg festzustellen, ob die Manipulation durch ein solches Tool erfolgt ist?
Wenn du das mitloggst und dann z.B. von der gleichen IP in regelmäßigen Abständen sowas findest kannst du davon ausgehen.
Insgesammt lässt sich eine Manipulation aber nicht verhindern. Man kann in jedem Fall notfalls
1. Alle Cookies löschen
2. Auf deine Seite gehen
3. Abstimmen
4. Neue IP besorgen (falls du diese abfragst)
5. Evtl. neue Browserkennung einstellen (falls du diese abfragst)
6. Wieder bei 1. anfangen bis man genug abgestimmt hat
(lässt sich natürlich wunderbar automatisieren...)
Jonathan