2010-04-26 7 views
5

Ich kodiere ein Formular für Gewinnspiele in PHP, wo der Benutzer einige Informationen in einem Formular übermittelt und in einer Datenbank speichert.Formulareingabe - Beschränkung auf eine Einsendung pro IP/Computer

Ich möchte einen Weg finden, dieses Formular auf eine Einreichung pro Person zu beschränken. Entweder einen Cookie löschen oder per IP-Adresse. Was wäre der beste Weg, um dies zu erreichen?

Ich baue es auf Code-Zünder, wenn das einen Unterschied macht.

Antwort

2

Einfache Antwort, melden Sie sich die IP in der gleichen Zeile mit dem Informationsspeicher. Wenn Sie ein Cookie erstellen, kann ein Bot oder Benutzer das Cookie leicht löschen, wodurch Ihr Schutzschema zerstört wird. Protokollieren Sie einfach die IP-Adresse und fragen Sie dann jeden Eintrag nach Eindeutigkeit ab, bevor Sie die Einreichung akzeptieren.

0

Warum nicht beides fallen lassen. Wirf einen Cookie auf den Computer des Benutzers. Dann behalte in einer Datenbank ein Feld mit einer IP-Adresse. Wenn sie unterschiedliche IP-Adressen haben (aufgrund bestimmter Internet-Firmenkonfigurationen), kann der Cookie sie auffangen. Das Datenbankfeld dient dazu, sicherer zu sein, und eine Sicherungskopie, wenn Personen keine Cookies zulassen. Diese Lösungen werden jedoch nicht zu 100% narrensicher sein, denn wenn eine Person IP-Adressen ändert und Cookies nicht zulässt, kann es zu Problemen kommen. Ich würde prüfen, ob Cookies aktiviert sind, um dies zu umgehen. Versuche einen Cookie zu setzen und lies ihn. Wenn du kannst, bist du gut zu gehen. Andernfalls werden Sie aufgefordert, Cookies zuzulassen.

Best of luck

+1

nicht, dass ein Cookie schlecht ist, aber jeder Anfänger Gewinnspiel Betrüger wird sofort überprüfen und löschen Cookies zwischen Spams, es ist so ziemlich der älteste Trick in dem Buch. –

1

Beide haben ihre eigenen Nachteile tbh. Cookies sind leicht zu fälschen und einfach zu entfernen, was mehrere Abstimmungen ermöglicht. Die Einschränkung durch IP ist besser, aber IP-Adressen können innerhalb von Netzwerken geteilt werden und können auch weitergegeben werden, um eine Erkennung zu vermeiden. Die beste Wette ist, sich auf etwas wie eine E-Mail-Adresse zu verlassen und den Benutzer zu zwingen, auf einen per E-Mail zugesandten Link zu klicken, um eine Abstimmung zu bestätigen, zugegebenermaßen ist das nicht großartig.

0

Um die anderen hinzuzufügen, könnten Sie eine Anmeldung/Anmeldung zur Abstimmung benötigen.

0

Wie von anderen angegeben, sind Cookies leicht zu fälschen/zu löschen. Die Client-IP, die für einen einzelnen Benutzer angezeigt wird, kann sogar während einer mittleren Sitzung geändert werden, und es können sich Tausende von Benutzern die gleiche Client-Adresse teilen.

E-Mail-Adressen sind schwieriger zu fälschen - und Sie können dem Prozess eine Verifikationsstufe hinzufügen - die Informationen, die Sie trotzdem erfassen müssen - aber den Benutzeragenten und die Clientadresse verfolgen, von der jede Einreichung stammt und von der verifiziert wird. Dann können Sie eine kluge Entscheidung über den Gewinner treffen, anstatt zu versuchen, jeden Beitrag zu überprüfen.

C.

1

Es gibt mehrere Methoden, die Sie zu mildern gegen zufälliges Betrug nutzen können. Meiner Ansicht nach sollte man nicht erwarten können, einen entschlossenen Betrüger ohne einen formaleren Validierungsprozess (cc-Autorisierung, etc.) aufhalten zu können.

Der einfachste Ansatz ist für eine Wohnadresse zu fragen, um Waren zu senden, wenn sie :)

In erster Linie bestreiten der Betrüger Feedback-Kanal in der Lage sein zu sagen, ob ihre Vorlage angenommen wurde gewinnen oder abgelehnt wird. Wenn es eine leichte Verzögerung für akzeptierte Einträge gibt, stellen Sie sicher, dass Sie eine falsche Verzögerung mit etwas Jitter hinzufügen, so dass sie nicht erkennen können, ob ihr Schema zur Verhinderung Ihrer Anti-Cheating-Methode funktioniert hat oder ob Sie überhaupt Anti-Cheating-Methoden haben. Das Erkennen von Masseneinträgen durch einen Betrüger ist viel einfacher, wenn sie nicht das Gefühl haben, kreativ sein zu müssen.

IP-Adresse wie Sie erwähnt haben. Vielleicht verwenden Sie GeoIP, Whois etc, um Distributionen im Laufe der Zeit WRT-Bereich zu erhalten.

Benutzer-Agent und System Fingerprinting - es gibt eine riesige Menge an Informationen, die Sie vom Browser erhalten können, die möglicherweise einzigartig sind. Browsertyp, Version, Betriebssystem, Bildschirmauflösung, Farbtiefe, installierte Schriftarten, Plugins (Flash, PDF, Java ... usw.) und zugehörige Versionsnummern, Sprache, lokale Browserzeit (Log Client Skew)

Verwendung von Cookies, verstecken Sie möglicherweise Verweise auf eine unschuldig klingende Domäne in einem eingeschlossenen Javascript, das Sie auch steuern. Dies kann verwendet werden, um die manuelle Löschung von offensichtlichen Cookies mit den versteckten Cookies zu korrelieren. Es ist weniger bekannt, dass Cookies auch in separaten Datenbanken anderer Plugins gespeichert werden können, die der Benutzer beispielsweise als Flash-Player haben kann. Diese werden NICHT entfernt, wenn die Browser-Cookies gelöscht werden.

Verwendung von Bildern mit Cache-Headern. Wenn ein Benutzer zum ersten Mal die Site besucht, wird nach der Eingabe ein Bild angezeigt. Wenn sie das Formular bereits ausgefüllt haben und sie erneut einreichen, wird das Bild zwischengespeichert und Sie können die Abwesenheit der Bildanforderung verwenden, um zu vermuten, dass übermittelte Einträge ein Ergebnis des Betrugs sind.

Verwandte Themen