Bagaimana cara kerja panji "Aman" cookie?

102

Saya tahu bahwa cookie dengan securebendera tidak akan dikirim melalui koneksi yang tidak terenkripsi. Saya bertanya-tanya bagaimana ini bekerja secara mendalam.

Siapa yang bertanggung jawab untuk menentukan apakah cookie akan dikirim atau tidak?

ted
sumber

Jawaban:

92

Klien menyetel ini hanya untuk koneksi terenkripsi dan ini didefinisikan di RFC 6265 :

Atribut Aman membatasi cakupan cookie untuk saluran "aman" (di mana "aman" ditentukan oleh agen pengguna). Jika cookie memiliki atribut Secure, agen pengguna akan menyertakan cookie dalam permintaan HTTP hanya jika permintaan tersebut dikirim melalui saluran aman (biasanya HTTP melalui Transport Layer Security (TLS) [RFC2818]).

Meskipun tampaknya berguna untuk melindungi cookie dari penyerang jaringan yang aktif, atribut Secure hanya melindungi kerahasiaan cookie. Penyerang jaringan yang aktif dapat menimpa cookie Aman dari saluran yang tidak aman, mengganggu integritasnya (lihat Bagian 8.6 untuk lebih jelasnya).

Cratylus
sumber
4
seandainya sisi klien belum memiliki cookie dan mereka harus dikirim dari sisi server (mis. masuk) akankah sisi server yang memutuskan untuk menyertakan cookie sebagai tanggapan?
ted
3
Server awalnya menyetel cookie melalui "Set-Cookie headers"
Ivan
49

Hanya satu kata lain tentang masalah ini:

Menghilangkan securekarena situs web Anda example.comsepenuhnya https tidak cukup.

Jika pengguna Anda menjangkau secara eksplisit http://example.com, mereka akan dialihkan ke https://example.comtetapi itu sudah terlambat; permintaan pertama berisi cookie.

Alain Tiemblo
sumber
6
Saya tahu ini sudah lama, tetapi pramuat HSTS membantu situasi ini dengan mencegah masalah ini sering terjadi. Ini masih belum 100% memperbaiki tetapi hanya hal lain yang perlu dipertimbangkan jika Anda benar-benar ingin menghindari cookie aman.
Tn. MonoChrome
5
@ Mr.MonoChrome Mengapa Anda ingin menghindari cookie aman?
MEMark
@ Mr. Monochrome meskipun beberapa browser dengan spesifikasi yang lebih lama atau lebih rendah, saya yakin, bahkan tidak mendukung HSTS
oldboy
1
Poin yang bagus. Untuk aplikasi .NET, lebih baik melakukan redirect di IIS (atau web.config) daripada secara terprogram (misalnya globals.asax)
piris
Jadi, jika Anda tidak mengalihkan dari http ke https, dan hanya melayani di https, Anda tidak perlu secure?
mengerem