Evercookie – ( Prawie ) Niezniszczalne ciasteczka

Jakiś czas temu na jednym ze swoich serwisów stanąłem przed wyzwaniem jak identyfikować użytkownika aby mógł głosować tylko raz dziennie.

Obecne mechanizmy polegające na zwykłych ciasteczkach + ip były dość … prymitywne i nie spełniały swojej roli.

Naturalnym wydało mi się użycie evercookie jednak oficjalna paczka posiadał kilka błędów które przeszkadzały podczas pracy z biblioteką.

Dlatego uruchomiłem repozytorium na Githubie ze swoimi zmianami
https://github.com/DarkGL3/evercookie

Co zostało zmienione:

  • Uporządkowanie trochę struktury katalogów
  • Dodanie wersji minified
  • Silverlight jest defaultowo wyłączony
  • Dodanie użycia obietów deferred z jQuery ( przykład poniżej )
  • Naprawa bugu w użyciu baseUrl

Plany

  • Dodanie czasu życia ciasteczek
  • Nowe sposoby zapisu
  • Szyfrowanie ciasteczek tak aby nie możliwy był odczyt z innej domeny ( można to osiągnąć stosując szyfrowanie po stronie serwera )

Przykład użycia

var ec = new evercookie(); 

ec.get( "cookie" ).done( function( value ){
    console.log( value , 'resolve - znaleziono ciasteczko' );
}).fail( function(){
    console.log( 'reject - brak ciasteczka' );
});

5 komentarzy o “Evercookie – ( Prawie ) Niezniszczalne ciasteczka

  1. Nie wiem czy chciałbym tak być traktowany, szczególnie jak masz mi dysk zaśmiecać lub używać dziur. Co to jest za strona? Jest na niej napisane wyraźnie, że używasz bugów w javie, które exploitujesz, żeby dostać się na dysk użytkownika czy robisz to po cichu?

    A co jak głosuję wgetem/curlem/linksem/noscriptem?

  2. A kto tu coś mówi o bugach w Javie? Dostępie do dysku? To jest wszystko oparte o legalne zapisywanie pewnych informacji w pamięci komputera użytkownika. Po prostu wykorzystuje więcej, niż zwykłe ciasteczka.

    1. Mówi: „Java exploit CVE-2013-0422 – Attempts to escape the applet sandbox and write cookie data directly to the user’s hard drive.”.

Dodaj komentarz