Laden...

Wie kann man bei einem Voting-System ohne Login verhindern, dass ein User mehrfach voted?

Erstellt von bbb vor 7 Jahren Letzter Beitrag vor 7 Jahren 2.412 Views
B
bbb Themenstarter:in
72 Beiträge seit 2009
vor 7 Jahren
Wie kann man bei einem Voting-System ohne Login verhindern, dass ein User mehrfach voted?

Hallo zusammen,

ich bin gerade bei der Konzeptionierung eines Voting-Systems für User-Kommentare. Ziel ist es, dass alle Website Besucher, egal ob eingeloggt oder nicht, in der Lage sein sollen einen Kommentar hoch- oder runter zu voten. Im Grunde genommen ein ähnliches System wie es Amazon bei seinen User-Bewertungen macht.

Nun stellt sich mir die Frage, wie ich am besten verhindere, dass ein User mehrfach votet. Mein erster Gedanke wäre es einen Cookie zu setzen. Wenn gevotet wurde dann entsprechend eine Methode zu haben die anhand des Cookies überprüft, ob gevotet werden darf. Ich hab dazu nen Snippet im Netz gefunden, wo es wie folgt gelöst wurde:

private Boolean CanUserVote(Guid id, double rating) 
{   
    HttpCookie voteCookie = Request.Cookies["Votes"];    
    if (voteCookie != null) 
    {        
        if (voteCookie[id.ToString()] != null) 
        {            
            return false;        
        }    
    }  
      
    //create the cookie and set the value    
    voteCookie = new HttpCookie("Votes");    
    voteCookie[id.ToString()] = rating.ToString();    
    Response.Cookies.Add(voteCookie);    
    return true;
}

Ist das Best-Practices? Oder gibt es noch weitere, vielleicht sogar bessere Möglichkeiten, Doppel-Votes zu unterbinden? Schließlich ließe sich diese Variante recht schnell aushebeln, sobald die Cookies einmal gelöscht wurden.

16.806 Beiträge seit 2008
vor 7 Jahren

Ohne entsprechenden Login wirst Du kein sicheres System bekommen:

  • IP Adressen ändern sich, manche User mit VPN oder via Handy haben die gleiche IP
  • Cookies kann man löschen bzw. gelten nur pro Browser. Im Unsichtbarkeitsmodus komplett ungeschützt.

Arg viel mehr Möglichkeiten ohne Login hast Du aber nicht.
Aber ja, trotzdem ist Deine Lösung via Cookie üblich, wenn es keinen Login gibt.

B
bbb Themenstarter:in
72 Beiträge seit 2009
vor 7 Jahren

Okay, dank dir für deine Einschätzung. Dann muss im Zweifel bei Mißbrauch das Voting auf bestehende User eingeschränkt werden.

C
2.121 Beiträge seit 2010
vor 7 Jahren

Dann muss im Zweifel bei Mißbrauch das Voting auf bestehende User eingeschränkt werden.

Also praktisch gleich 😉
Sobald einer merkt dass man auch unangemeldet voten kann ist entweder der Ruf des Systems dahin, oder es wird ausgenutzt. Wahrscheinlich beides.

Der nächste Schritt wäre, Fakeuser zu erkennen und zu unterbinden. Je nach Nutzerzahl genügt es vielleicht schon wenn sich einer 10 mal anmeldet und damit die Zahlen ausreichend verfälscht.

Und auch wenns ernüchternd ist, repräsentativ sind solche Zahlen niemals, egal wie viel Aufwand man hineinsteckt. Daher nur als unterhaltsames Beiwerk ansehen.

B
bbb Themenstarter:in
72 Beiträge seit 2009
vor 7 Jahren

Korrekt. Es soll als weiterer Zusatz dem System nur einen gewissen Mehrwert verpassen.
Ich werde als weitere Hürde das Ganze noch an die IP koppeln. Dann muss der Live-Betrieb ergeben wieviel Sinn das alles macht. Wenn man sich Systeme wie StackOverflow oder Amazon anguckt, dann bietet das dem Nutzer schon einen guten Mehrwert und es ist einigermaßen fälschungssicher gestaltet worden.

16.806 Beiträge seit 2008
vor 7 Jahren

Du kannst weder auf Amazon noch auf Stackoverflow ohne Registrierung voten - mit gutem Grund.
Ich kenne kein System, das ohne entsprechenden Schutz - und das geht nur mit Eindeutigkeit - nicht missbraucht wird.

Und ein schlechtes Voting System ist meiner Meinung nach schlimmer, als keines.
Aber das müsst ihr wissen.

Aufgrund des mehr als wahrscheinlichen Missbrauchs gibt es auf vielen Seiten auch nur ein potentiell positives Voten und kein negatives (Facebook, Twitter, GitHub...).
Dass negative Votes missbraucht werden, das sieht man ja tagtäglich auf YouTube oder auf Nachrichtenseiten.

Persönlich finde ich auch das Votingsystem bei Stackoverflow suboptimal.
Was da gar nicht so selten hoch gevotet oder gar als Lösung vorgeschlagen wird.. 🤔

C
2.121 Beiträge seit 2010
vor 7 Jahren

Stackoverflow ist gut, aber ziemlich komplex. Man braucht erst eine gewisse Anzahl an Beiträgen, sehr wahrscheinlich welche die nicht als Müll bewertet wurden, um selbst etwas bewerten zu dürfen. Das macht den Aufwand eines Fakeprofils schon ziemlich uninteressant.
Aber es ist in der Tat ein interessanter Mechanismus der sich deutlich von anonymen kommentierverfahren unterscheidet.
Nur muss man eben Mitglied sein und seine Mitgliedschaft auch ernst nehmen. Laufkundschaft ist da fehl am Platz.

Wie Amazon das macht weiß ich nicht. Am sinnvollsten auch so dass nur jemand etwas bewerten kann der es auch tatsächlich gekauft hat.

16.806 Beiträge seit 2008
vor 7 Jahren

Wie Amazon das macht weiß ich nicht. Am sinnvollsten auch so dass nur jemand etwas bewerten kann der es auch tatsächlich gekauft hat.

Drei Kategorien aktuell:

  • Käufer mit dem von Amazon vergebenen Status "Testkäufer"
  • Verifizierte Käufe (also über Amazon), sodass der Leser weiß, dass der Artikel wirklich gekauft wurde
  • Ohne verifizierter Kauf (kann also alles sein)
  • Kommentatoren mit entsprechenden Post-Status wie Top 50 Rezensent.

Wie sowas auf Amazon nach hinten los gehen kann:
Ich hab auf MyDealz zufällig gesehen, dass ein Händler sein eigenes Produkt mit den Worten "habe es auch gekauft, ist genial!" beworben hat, was dort sehr verpöhnt ist.
Resultat war ein eiskalter Deal und einige 1-Stern Bewertungen auf Amazon mit Worten wie "letzter Schrott, nie wieder!".
Alle Amazon-Kommentare waren wohl Fake und ein Resultat der wirklich unternehmerisch unklugen Aktion, da das Produkt gerade mal 2 Stunden dort gelistet war.
Gegen schlechte Kommantare kann man aber wiederum das Kommentar (inkl. dessen Bewertung) selbst bewerten.

Kombiniert ist so eine Aktion also:

  • für den Händler kontraproduktiv
  • sinkt die Wertigkeit der Amazon-Kommentare ohne verifizierten Kaufs

Ich persönlich finde sowohl Stackoverflow und auch Amazon haben Lücken, wenn man nicht darauf achtet. Aber sie sind bedeuten besser als 99,999% aller anderen, simplen Bewertungssysteme.
Daher achte ich auf beiden Plattformen immer noch, wer ein Kommentar geschrieben hat und den Artikel wirklich auch bezogen/genutzt hat.
Man muss also schon ein kluges System haben, sodass deren Wertigkeit auch existiert. Das ist aber mit nem simplen Cookie unmöglich.

B
bbb Themenstarter:in
72 Beiträge seit 2009
vor 7 Jahren

Danke für die Denkanstöße von euch beiden. Hat mir auf jeden Fall zu denken gegeben. Da den "Top-Kommentaren" sei es in Bezug auf Reise-Bewertungen, Produkte, etc. heutzutage sehr viel Bedeutung zukommt, werde ich mein System noch mal überdenken und wohl nicht public anbieten.

Edit: Jeder dem noch Ideen einfallen so ein System so robust wie möglich zu gestalten, ist herzlich eingeladen seine Ideen hier mitzuteilen 😉