Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Detecting a "unique" anonymous user

It is impossible to identify a user or request as unique since duping is trivial.

However, there are a handful of methods that, combined, can hamper cheating attempts and give a user quasi-unique status.

I know of the following:

  1. IP Address - store the IP address of each visitor in a database of some sort
    • Can be faked
    • Multiple computers/users can have the same address
    • Users with dynamic IP addresses (some ISP issue them)
  2. Cookie tracking - store a cookie per visitor. Visitors that don't have it are considered "unique"
    • Can be faked
    • Cookies can be blocked or cleared via browser

Are there more ways to track non-authorized (non-login, non-authentication) website visitors?

like image 994
Omar Avatar asked Oct 15 '10 07:10

Omar


People also ask

How do I find a unique user?

Analytical tools such as Google Analytics, Bing Analytics, Yandesk and other tracking tool uses visitor's IP address, Browser Cookies, Registration ID and Use Agent to identify a unique visitor. These are called the identifiers.

Who is an anonymous user?

If you've ever used a website or app without creating or logging into an account, then you yourself may have been an anonymous user at one time or another.

What is an anonymous user link?

In computing, an anonymous user is an individual who is allowed access to certain resources found on a network or on a web page, but does not have the full benefits associated with someone who is considered a registered or authorized user.


2 Answers

There are actually many ways you can detect a "unique" user. Many of these methods are used by our marketing friends. It get's even easier when you have plugins enabled such as Java, Flash etc.

Currently my favorite presentation of cookie based tracking is evercookie (http://samy.pl/evercookie/). It creates a "permanent" cookie via multiple storage mechanisms, the average user is not able to flush, specifically it uses:

  • Standard HTTP Cookies
  • Local Shared Objects (Flash Cookies)
  • Silverlight Isolated Storage
  • Storing cookies in RGB values of auto-generated, force-cached PNGs using HTML5 Canvas tag to read pixels (cookies) back out
  • Storing cookies in Web History
  • Storing cookies in HTTP ETags
  • Storing cookies in Web cache
  • window.name caching
  • Internet Explorer userData storage
  • HTML5 Session Storage
  • HTML5 Local Storage
  • HTML5 Global Storage
  • HTML5 Database Storage via SQLite

I can't remember the URL, but there is also a site which tells you how "anonymous" you are based on everything it can gather from your web browser: What plugins you have loaded, what version, what language, screensize, ... Then you can leverage the plugins I was talking about earlier (Flash, Java, ...) to find out even more about the user. I'll edit this post when I find the page whcih showed you "how unique you are" or maybe somebody knows »» actually it looks as if every user is in a way unique!

--EDIT--

Found the page I was talking about: Panopticlick - "How Unique and trackable is your browser".

It collects stuff like User Agent, HTTP_ACCEPT headers, Browser Plugins, Time Zone, Screen Size and Depth, System Fonts (via Java?), Cookies...

My result: Your browser fingerprint appears to be unique among the 1,221,154 tested so far.

like image 69
Dennis G Avatar answered Oct 08 '22 18:10

Dennis G


Panopticlick has a quite refined method for checking for unique users using fingerprinting. Apart from IP-adress and user-agent it used things like timezone, screen resolution, fonts installed on the system and plugins installed in the browser etc, so it comes up with a very distinct ID for each and every user without storing anything in their computers. False negatives (finding two different users with the exact same fingerprint) are very rare.

A problem with that approach is that it can yield some false positive, i.e. it considers the same user to be a new one if they've installed a new font for example. If this is ok or not depends on your application I suppose.

like image 42
Jakob Avatar answered Oct 08 '22 19:10

Jakob