2009-02-07 6 views
6

Ich versuche eine ASP.NET (C#) - Umfrage durchzuführen, die einen Benutzer mit einer Ja/Nein-Frage fragt und diese Abstimmung in der Datenbank protokolliert . Um Spam zu vermeiden, möchte ich sicherstellen, dass Benutzer nur einmal abstimmen können. Ich habe darüber nachgedacht, die IP-Adresse des Benutzers zu protokollieren. Wenn dies die Antwort ist, kann mir jemand ein Tutorial geben, das zeigt, wie dies erreicht werden kann. Wenn dies nicht die Antwort ist, dann geben Sie mir Ihre Vorschläge.So stellen Sie sicher, dass ein Benutzer nur einmal bei einer ASP.NET-Abstimmung abstimmen kann

Edit: Ich frage nicht Benutzer zu registrieren, da dies nicht meine Website ist.

+0

Dies wäre besser als eine sprachunabhängige Frage. :) – skiphoppy

+0

Ich benutze nur ASP.NET und C#. Ich kenne keine anderen Sprachen außer C++, die nicht für Websites funktioniert. Oh, und ein sehr einfaches JavaScript. – Kredns

Antwort

2

in Sitzungen protokolliert sind die einzige Möglichkeit, doppelt Abstimmungsbetrug zu verhindern, aber da Sie explizit für eine Art und Weise stellen die IP-Adresse anmelden, können Sie an, dass durch bekommen:

HttpContext.Current.Request.UserHostAddress;

oder

HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];

Sollte einfach genug sein, um in DB zu speichern und prüfen, ob IP bereits bei jeder Abfrage vorhanden ist.

+0

Das ist ein bisschen was ich gesucht habe. – Kredns

+0

Während das Sie eine IP-Adresse erhält, ist es nicht ein besonders guter Indikator für die Abstimmung (wie ich und andere erwähnt haben) –

+0

@Mitch Wheat, Dies ist die Standard-Praxis. Es ist nicht dumm, aber das ist der akzeptierte Weg, das Problem anzugehen. Analytics Suites zählen UUs, die auf denselben basieren. Wenn Sie irgendwelche Vorschläge haben, kurz bevor sich der Benutzer registriert, wie Ihre Antwort es vorschlägt, würde ich gerne etwas darüber erfahren. – aleemb

11

Sie können nur garantieren, dass jeder Benutzer eine Stimme hat, wenn Sie den Benutzer authentifizieren können. Daher benötigen Sie einen Authentifizierungsmechanismus, mit dem Sie verhindern können, dass der Benutzer mehrere Konten registriert.

Ich kann diese Arbeit nur in einer Umgebung sehen, in der der Benutzer etwas in sein Konto investiert hat, wie ein Abonnent für eine Online-Zeitung oder ein Reputationssystem wie auf StackOverflow.

+0

Dies ist keine praktische Lösung. Es hat keine Anwendung außerhalb geschlossener Gemeinschaften. Der Registrierungsprozess wird nur die Stimmen behindern, was diesen Ansatz kontraproduktiv macht. – aleemb

4

Wenn Sie eine registrierte Benutzerliste haben, senden Sie ihnen eine E-Mail, die einen eindeutigen Link enthält, der beispielsweise eine GUID enthält, die GUID in einer Datenbank aufzeichnet und beim Abstimmen übereinstimmt.

Wenn Sie über allgemein öffentlich zugänglich und sicher sprechen, dann reicht die IP-Adresse allein nicht aus (google electronic electal voting für die vielen Themen, die mit sicherer öffentlicher Abstimmung verbunden sind).

Haben Sie darüber nachgedacht, eines der kostenlosen Voting-Dienste zu nutzen?

Condorcet Internet Voting Service

3

IP-Adressen werden nicht für die Millionen von Menschen arbeiten, die sich hinter einem Proxy als auch arbeiten.

Cookies sind eine Teillösung, aber Abstimmungsroboter konnten den Cookie einfach nicht senden.

1

Haben Sie eine Registrierung, die eine E-Mail-Bestätigung der Registrierung erfordert, und stellen Sie sicher, dass die E-Mail-Adresse eine eindeutige Spalte in der DB unter Ihren Benutzern ist. Dann binden Sie die Abstimmung an die E-Mail-Adresse. Es wird eine Sockenpuppe, die mehrere E-Mail-Adressen hat, nicht vollständig verhindern, aber es wird zumindest den Aufwand für die meisten nicht wert sein.

+0

Besser, eine eindeutige Nummer (GUID) für die einmalige Abstimmung jedes Benutzers zu generieren ... –

4

Sie können eine einzelne Abstimmung nicht auf eine IP-Adresse beschränken. Eine IP-Adresse entspricht nicht einem einzelnen Benutzer. Eine IP-Adresse repräsentiert einen oder mehrere Benutzer.

0

Eine Kombination von IP und Useragent kann Ihnen eine vernünftige Lösung bieten.

0

Ich stimme zu, dass eine einzelne IP-Adresse keinem einzelnen Benutzer entspricht, aber ich denke, das ist der sicherste Weg, um eine Stimme pro Person aufrechtzuerhalten. Ich verwende normalerweise Cookies, um zu verfolgen, wer gewählt hat. Natürlich ist dies ein einfacher Hack, bei dem Sie einfach die Cookies löschen und dann erneut abstimmen können.Wenn die Abstimmung nur zufällig ist, dann interessiert mich das nicht. Wenn die richtigen Stimmen für Ihre Bewerbung wirklich wichtig sind, verwenden Sie die IP-Adresse.