Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>It depends on how far you want to go.</p> <p>An easy to implement solution would be to set an <a href="http://samy.pl/evercookie/" rel="nofollow">Evercookie</a> on any browser that completes the survey. This will be really easy to defeat (clear your recent history or use private navigation) but may be enough for non tech-savvy users.</p> <p>A much harder solution (with potential false positives) would be to use <a href="https://panopticlick.eff.org/" rel="nofollow">browser fingerprinting</a> in addition to their IP address, netblock and evercookie and store all these info separately in a database.</p> <p>When someone new tries to complete the survey, compare their info against what you have in the database and increment a score for each item that matches. If the score is above a predefined constant, you may have caught someone trying to retake the survey.</p> <p>The hard part would be to adjust that constant and maybe give an unique multiplier for each item depending on the uniqueness of the item (an user-agent isn't that unique, an IP is better, and the list of installed plugins is even better, for example).</p> <p>Finally you should ban Tor Exit Nodes using <a href="https://check.torproject.org/cgi-bin/TorBulkExitList.py" rel="nofollow">this list</a> (enter the IP of your server and their script will return a list of all exit nodes that can reach your server) and open proxies/VPN services using one of those <a href="http://en.wikipedia.org/wiki/Comparison_of_DNS_blacklists" rel="nofollow">blacklists</a>.</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload