Cookie adalah sepotong kecil data yang dikirim dari situs web dan disimpan di komputer pengguna oleh browser web pengguna saat pengguna menjelajah
Berikut adalah parameter yang melibatkan cookie
ParameterDetailsnameNama cookie. Ini juga merupakan kunci yang dapat Anda gunakan untuk mengambil nilai dari _______ 98 _______ super global. Ini adalah satu-satunya parameter yang diperlukan. valueNilai untuk disimpan dalam cookie. Data ini dapat diakses oleh browser, jadi jangan simpan apa pun yang sensitif di sini. expireStempel waktu Unix yang menunjukkan kapan cookie harus kedaluwarsa. Jika disetel ke nol, cookie akan kedaluwarsa pada akhir sesi. Jika disetel ke angka yang kurang dari stempel waktu Unix saat ini, cookie akan segera kedaluwarsa. pathCakupan cookie. Jika disetel ke / cookie akan tersedia di seluruh domain. Jika disetel ke 0 maka cookie hanya akan tersedia di jalur tersebut dan turunan dari jalur tersebut. Default ke jalur saat ini dari file tempat cookie diatur. 1Domain atau subdomain tempat cookie tersedia. Jika diatur ke domain kosong (mis. g. jobtensor. com) maka cookie akan tersedia untuk domain tersebut dan semua subdomain. Jika disetel ke subdomain (mis. g. pekerjaan. jobtensor. com) maka cookie hanya akan tersedia di subdomain tersebut, dan semua subdomain. 2Ketika disetel ke 3, cookie hanya akan disetel jika ada koneksi HTTPS yang aman antara klien dan server. 4Menetapkan bahwa cookie hanya boleh tersedia melalui protokol HTTP/S dan tidak boleh tersedia untuk bahasa skrip sisi klien seperti JavaScript. Hanya tersedia dalam PHP 5. 2 atau lebih baruMemodifikasi Cookie
Cookie dapat diatur atau dimodifikasi menggunakan sintaks berikut
setcookie(name, value, expire, path, domain, secure, httponly);Perhatikan bahwa
- Cookie adalah bagian dari header HTTP, jadi 5 harus dipanggil sebelum output dikirim ke browser
- Saat memodifikasi cookie, pastikan jalur dan parameter domain 5 cocok dengan cookie yang ada atau cookie baru akan dibuat sebagai gantinya
- Porsi nilai cookie akan secara otomatis di-urlencode ketika Anda mengirim cookie, dan ketika diterima, secara otomatis didekode dan ditugaskan ke variabel dengan nama yang sama dengan nama cookie
Berikut adalah contoh pengaturan cookie
7Memeriksa apakah Cookie telah Ditetapkan
Fungsi 2 dapat digunakan pada variabel $_COOKIE superglobal untuk memeriksa apakah cookie disetel
_4
Menghapus Cookie
Untuk menghapus cookie, setel stempel waktu kedaluwarsa ke waktu di masa lalu. Ini memicu mekanisme penghapusan browser
Note: When deleting a cookie make sure the path and domain parameters of ________0_______5 matches the cookie you're trying to delete or a new cookie, which expires immediately, will be created.
Cookies, or browser cookies, are small pieces of data which the web server asks the client's web browser to store. Each request back to the server will include these pieces of data. The data is organized as key/value pairs.
A cookie can be set using PHP's setcookie() fungsi.
Pada permintaan mendatang, pasangan kunci/nilai cookie akan ditetapkan ke $_COOKIE superglobal
Selain argumen $name dan 0, setcookie() juga menerima banyak argumen lain untuk konfigurasi
Banyak dari argumen konfigurasi ini penting untuk mencegah serangan seperti Pencurian dan Manipulasi Cookie, Pembajakan Sesi, dan Fiksasi Sesi
Cookie HTTP (cookie web, cookie browser) adalah sepotong kecil data yang dikirimkan server ke browser web pengguna. Browser dapat menyimpan cookie dan mengirimkannya kembali ke server yang sama dengan permintaan selanjutnya. Biasanya, cookie HTTP digunakan untuk mengetahui apakah dua permintaan berasal dari browser yang sama—misalnya, membuat pengguna tetap login. Itu mengingat informasi stateful untuk protokol HTTP
Cookie terutama digunakan untuk tiga tujuan
Manajemen sesiLogin, keranjang belanja, skor game, atau apa pun yang harus diingat oleh server
PersonalisasiPreferensi pengguna, tema, dan pengaturan lainnya
PelacakanMerekam dan menganalisis perilaku pengguna
Cookie pernah digunakan untuk penyimpanan sisi klien umum. Meskipun ini masuk akal ketika mereka adalah satu-satunya cara untuk menyimpan data pada klien, API penyimpanan modern sekarang direkomendasikan. Cookie dikirim dengan setiap permintaan, sehingga dapat memperburuk kinerja (terutama untuk koneksi data seluler). API modern untuk penyimpanan klien adalah Web Storage API (localStorage dan sessionStorage) dan IndexedDB
Catatan. Untuk melihat cookie yang tersimpan (dan penyimpanan lain yang dapat digunakan halaman web), Anda dapat mengaktifkan Storage Inspector di Developer Tools dan memilih Cookies dari struktur penyimpanan
Setelah menerima permintaan HTTP, server dapat mengirim satu atau lebih Set-Cookie header dengan respons. Browser biasanya menyimpan cookie dan mengirimkannya dengan permintaan yang dibuat ke server yang sama di dalam header HTTP HTTP/2.0 200 OK Content-Type: text/html Set-Cookie: yummy_cookie=choco Set-Cookie: tasty_cookie=strawberry [page content] 0. Anda dapat menentukan tanggal kedaluwarsa atau periode waktu yang setelahnya cookie tidak boleh dikirim. Anda juga dapat mengatur batasan tambahan untuk domain tertentu dan jalur untuk membatasi kemana cookie dikirimkan. Untuk detail tentang atribut tajuk yang disebutkan di bawah, lihat artikel referensi Set-Cookie
Header respons HTTP Set-Cookie mengirimkan cookie dari server ke agen pengguna. Cookie sederhana diatur seperti ini
Set-Cookie: <cookie-name>=<cookie-value>
Ini menginstruksikan server mengirimkan header untuk memberitahu klien untuk menyimpan sepasang cookie
HTTP/2.0 200 OK Content-Type: text/html Set-Cookie: yummy_cookie=choco Set-Cookie: tasty_cookie=strawberry [page content]
Kemudian, dengan setiap permintaan selanjutnya ke server, browser mengirimkan semua cookie yang disimpan sebelumnya kembali ke server menggunakan header HTTP/2.0 200 OK Content-Type: text/html Set-Cookie: yummy_cookie=choco Set-Cookie: tasty_cookie=strawberry [page content] 0
GET /sample_page.html HTTP/2.0 Host: www.example.org Cookie: yummy_cookie=choco; tasty_cookie=strawberry
Catatan. Berikut cara menggunakan header Set-Cookie di berbagai aplikasi sisi server
- PHP
- Piton
- Ruby di Rel
Umur cookie dapat ditentukan dalam dua cara
- Cookie sesi dihapus saat sesi saat ini berakhir. Browser menentukan kapan "sesi saat ini" berakhir, dan beberapa browser menggunakan pemulihan sesi saat memulai ulang. Ini dapat menyebabkan cookie sesi bertahan tanpa batas waktu
- Cookie permanen dihapus pada tanggal yang ditentukan oleh atribut HTTP/2.0 200 OK Content-Type: text/html Set-Cookie: yummy_cookie=choco Set-Cookie: tasty_cookie=strawberry [page content] 7, atau setelah jangka waktu yang ditentukan oleh atribut HTTP/2.0 200 OK Content-Type: text/html Set-Cookie: yummy_cookie=choco Set-Cookie: tasty_cookie=strawberry [page content] 8
Sebagai contoh
Set-Cookie: id=a3fWa; Expires=Thu, 31 Oct 2021 07:28:00 GMT;
Catatan. Saat Anda menyetel tanggal dan waktu HTTP/2.0 200 OK Content-Type: text/html Set-Cookie: yummy_cookie=choco Set-Cookie: tasty_cookie=strawberry [page content] _7, tanggal dan waktu tersebut relatif terhadap klien tempat cookie disetel, bukan server
Jika situs Anda mengotentikasi pengguna, itu harus membuat ulang dan mengirim ulang cookie sesi, bahkan yang sudah ada, setiap kali pengguna mengautentikasi. Pendekatan ini membantu mencegah , di mana pihak ketiga dapat menggunakan kembali sesi pengguna
Anda dapat memastikan bahwa cookie dikirim dengan aman dan tidak diakses oleh pihak atau skrip yang tidak diinginkan dengan salah satu dari dua cara. dengan atribut GET /sample_page.html HTTP/2.0 Host: www.example.org Cookie: yummy_cookie=choco; tasty_cookie=strawberry 0 dan atribut GET /sample_page.html HTTP/2.0 Host: www.example.org Cookie: yummy_cookie=choco; tasty_cookie=strawberry 1
Cookie dengan atribut GET /sample_page.html HTTP/2.0 Host: www.example.org Cookie: yummy_cookie=choco; tasty_cookie=strawberry _0 hanya dikirim ke server dengan permintaan terenkripsi melalui protokol HTTPS. Itu tidak pernah dikirim dengan HTTP tanpa jaminan (kecuali di localhost), yang berarti penyerang man-in-the-middle tidak dapat mengaksesnya dengan mudah. Situs tidak aman (dengan GET /sample_page.html HTTP/2.0 Host: www.example.org Cookie: yummy_cookie=choco; tasty_cookie=strawberry _3 di URL) tidak dapat menyetel cookie dengan atribut GET /sample_page.html HTTP/2.0 Host: www.example.org Cookie: yummy_cookie=choco; tasty_cookie=strawberry 0. Namun, jangan berasumsi bahwa GET /sample_page.html HTTP/2.0 Host: www.example.org Cookie: yummy_cookie=choco; tasty_cookie=strawberry 0 mencegah semua akses ke informasi sensitif di cookie. Misalnya, seseorang dengan akses ke hard disk klien (atau JavaScript jika atribut GET /sample_page.html HTTP/2.0 Host: www.example.org Cookie: yummy_cookie=choco; tasty_cookie=strawberry 1 tidak disetel) dapat membaca dan mengubah informasi
Cookie dengan atribut GET /sample_page.html HTTP/2.0 Host: www.example.org Cookie: yummy_cookie=choco; tasty_cookie=strawberry _1 tidak dapat diakses oleh JavaScript GET /sample_page.html HTTP/2.0 Host: www.example.org Cookie: yummy_cookie=choco; tasty_cookie=strawberry 8 API; . Misalnya, cookie yang bertahan di sesi sisi server tidak perlu tersedia untuk JavaScript dan harus memiliki atribut GET /sample_page.html HTTP/2.0 Host: www.example.org Cookie: yummy_cookie=choco; tasty_cookie=strawberry 1. Tindakan pencegahan ini membantu mengurangi serangan skrip () lintas situs
Ini sebuah contoh
Set-Cookie: id=a3fWa; Expires=Thu, 21 Oct 2021 07:28:00 GMT; Secure; HttpOnly
Atribut Set-Cookie: id=a3fWa; Expires=Thu, 31 Oct 2021 07:28:00 GMT; 0 dan Set-Cookie: id=a3fWa; Expires=Thu, 31 Oct 2021 07:28:00 GMT; 1 menentukan ruang lingkup cookie. ke URL mana cookie harus dikirim
Atribut domain
Atribut Set-Cookie: id=a3fWa; Expires=Thu, 31 Oct 2021 07:28:00 GMT; _0 menentukan host mana yang dapat menerima cookie. Jika server tidak menentukan Set-Cookie: id=a3fWa; Expires=Thu, 31 Oct 2021 07:28:00 GMT; 0, browser menetapkan default domain ke host yang sama yang menyetel cookie, tidak termasuk subdomain. Jika Set-Cookie: id=a3fWa; Expires=Thu, 31 Oct 2021 07:28:00 GMT; 0 ditentukan, maka subdomain selalu disertakan. Oleh karena itu, menentukan Set-Cookie: id=a3fWa; Expires=Thu, 31 Oct 2021 07:28:00 GMT; 0 tidak seketat menghilangkannya. Namun, akan sangat membantu jika subdomain perlu berbagi informasi tentang pengguna
Misalnya, jika Anda menyetel Set-Cookie: id=a3fWa; Expires=Thu, 31 Oct 2021 07:28:00 GMT; _6, cookie tersedia di subdomain seperti Set-Cookie: id=a3fWa; Expires=Thu, 31 Oct 2021 07:28:00 GMT; 7
Atribut jalur
Atribut Set-Cookie: id=a3fWa; Expires=Thu, 31 Oct 2021 07:28:00 GMT; _1 menunjukkan jalur URL yang harus ada di URL yang diminta untuk mengirimkan header HTTP/2.0 200 OK Content-Type: text/html Set-Cookie: yummy_cookie=choco Set-Cookie: tasty_cookie=strawberry [page content] 0. Karakter Set-Cookie: id=a3fWa; Expires=Thu, 21 Oct 2021 07:28:00 GMT; Secure; HttpOnly _0 ("/") dianggap sebagai pemisah direktori, dan subdirektori juga cocok
Misalnya, jika Anda menyetel Set-Cookie: id=a3fWa; Expires=Thu, 21 Oct 2021 07:28:00 GMT; Secure; HttpOnly _1, jalur permintaan ini cocok
- Set-Cookie: id=a3fWa; Expires=Thu, 21 Oct 2021 07:28:00 GMT; Secure; HttpOnly _2
- Set-Cookie: id=a3fWa; Expires=Thu, 21 Oct 2021 07:28:00 GMT; Secure; HttpOnly _3
- Set-Cookie: id=a3fWa; Expires=Thu, 21 Oct 2021 07:28:00 GMT; Secure; HttpOnly _4
- Set-Cookie: id=a3fWa; Expires=Thu, 21 Oct 2021 07:28:00 GMT; Secure; HttpOnly _5
Tetapi jalur permintaan ini tidak
- Set-Cookie: id=a3fWa; Expires=Thu, 21 Oct 2021 07:28:00 GMT; Secure; HttpOnly _6
- Set-Cookie: id=a3fWa; Expires=Thu, 21 Oct 2021 07:28:00 GMT; Secure; HttpOnly _7
- Set-Cookie: id=a3fWa; Expires=Thu, 21 Oct 2021 07:28:00 GMT; Secure; HttpOnly _8
atribut SameSite
Atribut Set-Cookie: id=a3fWa; Expires=Thu, 21 Oct 2021 07:28:00 GMT; Secure; HttpOnly _9 memungkinkan server menentukan apakah/kapan cookie dikirim dengan permintaan lintas situs (di mana Situs ditentukan oleh domain yang dapat didaftarkan dan skema. http atau https). Ini memberikan beberapa perlindungan terhadap serangan pemalsuan permintaan lintas situs (CSRF). Dibutuhkan tiga nilai yang mungkin. Set-Cookie: mykey=myvalue; SameSite=Strict 0, Set-Cookie: mykey=myvalue; SameSite=Strict 1, dan Set-Cookie: mykey=myvalue; SameSite=Strict 2
Dengan Set-Cookie: mykey=myvalue; SameSite=Strict _0, browser hanya mengirimkan cookie dengan permintaan dari situs asal cookie. Set-Cookie: mykey=myvalue; SameSite=Strict 1 serupa, kecuali browser juga mengirimkan cookie ketika pengguna menavigasi ke situs asal cookie (bahkan jika pengguna berasal dari situs yang berbeda). Misalnya, dengan mengikuti tautan dari situs eksternal. Set-Cookie: mykey=myvalue; SameSite=Strict 2 menetapkan bahwa cookie dikirim pada permintaan asal dan lintas situs, tetapi hanya dalam konteks aman (i. e. , jika Set-Cookie: mykey=myvalue; SameSite=Strict 6 maka atribut GET /sample_page.html HTTP/2.0 Host: www.example.org Cookie: yummy_cookie=choco; tasty_cookie=strawberry 0 juga harus disetel). Jika tidak ada atribut Set-Cookie: id=a3fWa; Expires=Thu, 21 Oct 2021 07:28:00 GMT; Secure; HttpOnly 9 yang ditetapkan, cookie akan diperlakukan sebagai Set-Cookie: mykey=myvalue; SameSite=Strict 1
Ini sebuah contoh
Set-Cookie: mykey=myvalue; SameSite=Strict
Catatan. Standar terkait dengan Set-Cookie: id=a3fWa; Expires=Thu, 21 Oct 2021 07:28:00 GMT; Secure; HttpOnly _9 baru saja diubah (MDN mendokumentasikan perilaku baru di atas). Lihat tabel cookie untuk informasi tentang cara menangani atribut dalam versi browser tertentu
- document.cookie = "yummy_cookie=choco"; document.cookie = "tasty_cookie=strawberry"; console.log(document.cookie); // logs "yummy_cookie=choco; tasty_cookie=strawberry" 1 adalah default baru jika Set-Cookie: id=a3fWa; Expires=Thu, 21 Oct 2021 07:28:00 GMT; Secure; HttpOnly 9 tidak ditentukan. Sebelumnya, cookie dikirim untuk semua permintaan secara default
- Cookie dengan Set-Cookie: mykey=myvalue; SameSite=Strict 6 sekarang juga harus menentukan atribut GET /sample_page.html HTTP/2.0 Host: www.example.org Cookie: yummy_cookie=choco; tasty_cookie=strawberry 0 (memerlukan konteks yang aman)
- Cookie dari domain yang sama tidak lagi dianggap berasal dari situs yang sama jika dikirim menggunakan skema yang berbeda (GET /sample_page.html HTTP/2.0 Host: www.example.org Cookie: yummy_cookie=choco; tasty_cookie=strawberry 3 atau document.cookie = "yummy_cookie=choco"; document.cookie = "tasty_cookie=strawberry"; console.log(document.cookie); // logs "yummy_cookie=choco; tasty_cookie=strawberry" 6)
Awalan kue
Karena desain mekanisme cookie, server tidak dapat mengonfirmasi bahwa cookie telah disetel dari sumber yang aman atau bahkan memberi tahu dari mana cookie awalnya disetel.
Aplikasi yang rentan di subdomain dapat menyetel cookie dengan atribut Set-Cookie: id=a3fWa; Expires=Thu, 31 Oct 2021 07:28:00 GMT; 0, yang memberikan akses ke cookie tersebut di semua subdomain lainnya. Mekanisme ini dapat disalahgunakan dalam serangan fiksasi sesi. Lihat untuk metode mitigasi utama
Namun, sebagai tindakan pertahanan mendalam, Anda dapat menggunakan awalan cookie untuk menegaskan fakta spesifik tentang cookie. Tersedia dua awalan
document.cookie = "yummy_cookie=choco"; document.cookie = "tasty_cookie=strawberry"; console.log(document.cookie); // logs "yummy_cookie=choco; tasty_cookie=strawberry" _8Jika nama cookie memiliki awalan ini, itu diterima di header Set-Cookie hanya jika itu juga ditandai dengan atribut GET /sample_page.html HTTP/2.0 Host: www.example.org Cookie: yummy_cookie=choco; tasty_cookie=strawberry 0, dikirim dari asal yang aman, tidak menyertakan atribut Set-Cookie: id=a3fWa; Expires=Thu, 31 Oct 2021 07:28:00 GMT; 0, dan atribut Set-Cookie: id=a3fWa; Expires=Thu, 31 Oct 2021 07:28:00 GMT; 1 disetel ke Set-Cookie: id=a3fWa; Expires=Thu, 21 Oct 2021 07:28:00 GMT; Secure; HttpOnly 6. Dengan cara ini, cookie ini dapat dilihat sebagai "domain-locked"
localStorage_4Jika nama cookie memiliki awalan ini, itu diterima di header Set-Cookie hanya jika ditandai dengan atribut GET /sample_page.html HTTP/2.0 Host: www.example.org Cookie: yummy_cookie=choco; tasty_cookie=strawberry 0 dan dikirim dari asal yang aman. Ini lebih lemah dari document.cookie = "yummy_cookie=choco"; document.cookie = "tasty_cookie=strawberry"; console.log(document.cookie); // logs "yummy_cookie=choco; tasty_cookie=strawberry" _8 awalan
Peramban akan menolak cookie dengan awalan ini yang tidak sesuai dengan batasannya. Perhatikan bahwa ini memastikan bahwa cookie yang dibuat oleh subdomain dengan awalan terbatas pada subdomain atau diabaikan sepenuhnya. Karena server aplikasi hanya memeriksa nama cookie tertentu saat menentukan apakah pengguna diautentikasi atau token CSRF sudah benar, ini secara efektif bertindak sebagai tindakan pertahanan terhadap fiksasi sesi
Catatan. Di server aplikasi, aplikasi web harus memeriksa nama cookie lengkap termasuk awalannya. Agen pengguna tidak menghapus awalan dari cookie sebelum mengirimkannya dalam header HTTP/2.0 200 OK Content-Type: text/html Set-Cookie: yummy_cookie=choco Set-Cookie: tasty_cookie=strawberry [page content] 0 permintaan
Untuk informasi selengkapnya tentang awalan cookie dan status dukungan browser saat ini, lihat
Akses JavaScript menggunakan Dokumen. Kue kering
Anda dapat membuat cookie baru melalui JavaScript menggunakan properti GET /sample_page.html HTTP/2.0 Host: www.example.org Cookie: yummy_cookie=choco; tasty_cookie=strawberry 8. Anda juga dapat mengakses cookie yang ada dari JavaScript jika flag GET /sample_page.html HTTP/2.0 Host: www.example.org Cookie: yummy_cookie=choco; tasty_cookie=strawberry 1 tidak disetel
document.cookie = "yummy_cookie=choco"; document.cookie = "tasty_cookie=strawberry"; console.log(document.cookie); // logs "yummy_cookie=choco; tasty_cookie=strawberry"
Cookie yang dibuat melalui JavaScript tidak dapat menyertakan bendera GET /sample_page.html HTTP/2.0 Host: www.example.org Cookie: yummy_cookie=choco; tasty_cookie=strawberry 1
Harap perhatikan masalah keamanan di bagian di bawah ini. Cookie yang tersedia untuk JavaScript dapat dicuri melalui XSS
Catatan. Saat Anda menyimpan informasi dalam cookie, ingatlah bahwa semua nilai cookie dapat dilihat, dan dapat diubah oleh, pengguna akhir. Bergantung pada aplikasinya, Anda mungkin ingin menggunakan pengenal buram yang dicari server, atau menyelidiki mekanisme autentikasi/kerahasiaan alternatif seperti Token Web JSON
Cara untuk mengurangi serangan yang melibatkan cookie
- Gunakan atribut GET /sample_page.html HTTP/2.0 Host: www.example.org Cookie: yummy_cookie=choco; tasty_cookie=strawberry _1 untuk mencegah akses ke nilai cookie melalui JavaScript
- Cookie yang digunakan untuk informasi sensitif (seperti menunjukkan autentikasi) harus berumur pendek, dengan atribut Set-Cookie: id=a3fWa; Expires=Thu, 21 Oct 2021 07:28:00 GMT; Secure; HttpOnly 9 disetel ke Set-Cookie: mykey=myvalue; SameSite=Strict 0 atau Set-Cookie: mykey=myvalue; SameSite=Strict 1. (Lihat di atas. ) Dalam , ini memastikan bahwa cookie autentikasi tidak dikirim dengan permintaan lintas situs. Ini akan membuat permintaan tidak diautentikasi secara efektif ke server aplikasi
Cookie dikaitkan dengan domain dan skema tertentu (seperti sessionStorage6 atau sessionStorage7), dan juga dapat dikaitkan dengan subdomain jika atribut Set-Cookie Set-Cookie: id=a3fWa; Expires=Thu, 31 Oct 2021 07:28:00 GMT; 0 ditetapkan. Jika domain dan skema cookie cocok dengan halaman saat ini, cookie tersebut dianggap berasal dari situs yang sama dengan halaman tersebut, dan disebut sebagai cookie pihak pertama
Jika domain dan skemanya berbeda, cookie tidak dianggap berasal dari situs yang sama, dan disebut sebagai cookie pihak ketiga. Meskipun server yang menghosting halaman web menyetel cookie pihak pertama, halaman tersebut mungkin berisi gambar atau komponen lain yang disimpan di server di domain lain (misalnya, spanduk iklan) yang dapat menyetel cookie pihak ketiga. Ini terutama digunakan untuk periklanan dan pelacakan di seluruh web. Misalnya jenis cookie yang digunakan oleh Google
Server pihak ketiga dapat membuat profil riwayat penelusuran dan kebiasaan pengguna berdasarkan cookie yang dikirimkan kepadanya oleh browser yang sama saat mengakses beberapa situs. Firefox, secara default, memblokir cookie pihak ketiga yang diketahui berisi pelacak. Cookie pihak ketiga (atau hanya cookie pelacak) juga dapat diblokir oleh pengaturan atau ekstensi browser lain. Pemblokiran cookie dapat menyebabkan beberapa komponen pihak ketiga (seperti widget media sosial) tidak berfungsi sebagaimana mestinya
Catatan. Server dapat (dan harus) menyetel atribut cookie SameSite untuk menentukan apakah cookie dapat dikirim ke situs pihak ketiga atau tidak
Perundang-undangan atau peraturan yang mencakup penggunaan cookie termasuk
- Peraturan Privasi Data Umum (GDPR) di Uni Eropa
- Pedoman ePrivasi di UE
- Undang-Undang Privasi Konsumen California
Peraturan ini memiliki jangkauan global. Aturan tersebut berlaku untuk situs mana pun di World Wide Web yang diakses oleh pengguna dari yurisdiksi ini (Uni Eropa dan California, dengan peringatan bahwa undang-undang California hanya berlaku untuk entitas dengan pendapatan kotor lebih dari 25 juta USD, antara lain)
Peraturan ini mencakup persyaratan seperti
- Memberi tahu pengguna bahwa situs Anda menggunakan cookie
- Mengizinkan pengguna memilih untuk tidak menerima beberapa atau semua cookie
- Mengizinkan pengguna menggunakan sebagian besar layanan Anda tanpa menerima cookie
Mungkin ada peraturan lain yang mengatur penggunaan cookie di wilayah Anda. Beban Anda untuk mengetahui dan mematuhi peraturan ini. Ada perusahaan yang menawarkan kode "banner cookie" yang membantu Anda mematuhi peraturan ini
Pendekatan lain untuk menyimpan data di browser adalah Web Storage API. Jendela. sessionStorage dan jendela. properti localStorage sesuai dengan durasi sesi dan cookie permanen, tetapi memiliki batas penyimpanan yang lebih besar daripada cookie, dan tidak pernah dikirim ke server. Jumlah data yang lebih terstruktur dan lebih besar dapat disimpan menggunakan IndexedDB API, atau pustaka yang dibangun di atasnya
Ada beberapa teknik yang dirancang untuk membuat ulang cookie setelah dihapus. Ini dikenal sebagai cookie "zombie". Teknik ini melanggar prinsip privasi pengguna dan kontrol pengguna, dapat melanggar peraturan privasi data, dan dapat membuat situs web yang menggunakannya terkena tanggung jawab hukum