Katakanlah saya memiliki situs web yang dipanggil a.com
, dan ketika halaman tertentu dari situs ini dimuat, katakan tautan halaman, saya ingin mengatur cookie untuk situs lain yang dipanggil b.com
, kemudian mengarahkan pengguna ke b.com
.
Maksud saya, saat memuat a.com/link
saya ingin mengatur cookie untuk b.com
dan mengarahkan pengguna ke b.com
.
Saya mengujinya, dan browser benar-benar menerima cookie dari a.com/link
, tetapi tidak mengirim cookie itu pada permintaan pengalihan b.com
. Apakah ini normal?
Bisakah kita menetapkan cookie untuk domain lain?
javascript
cookies
redirect
Rasoul Zabihi
sumber
sumber
Jawaban:
Anda tidak dapat menetapkan cookie untuk domain lain. Membiarkan ini akan menghadirkan kelemahan keamanan yang sangat besar.
Anda harus meminta b.com untuk mengatur cookie. Jika a.com mengarahkan pengguna ke
b.com/setcookie.php?c=value
Script setcookie dapat berisi yang berikut untuk mengatur cookie dan mengarahkan ke halaman yang benar di b.com
sumber
Mirip dengan jawaban teratas, tetapi alih-alih mengarahkan ulang ke halaman dan kembali lagi yang akan menyebabkan pengalaman pengguna yang buruk Anda dapat mengatur gambar pada domain A.
Dan kemudian pada domain B yaitu example.com di cookie.php Anda akan memiliki kode berikut:
Hattip ke Subin
sumber
Probaly bisa Anda gunakan
Iframe
untuk ini. Facebook mungkin menggunakan teknik ini. Anda dapat membaca lebih lanjut tentang ini di sini . Stackoverflow menggunakan teknik serupa, tetapi dengan penyimpanan lokal HTML5, lebih banyak tentang ini di blog merekasumber
Pengaturan cookie untuk domain lain tidak dimungkinkan.
Jika Anda ingin meneruskan data ke domain lain, Anda dapat menyandikan ini ke url.
sumber
Anda tidak bisa, setidaknya tidak secara langsung. Itu akan menjadi risiko keamanan yang buruk.
Meskipun Anda dapat menentukan atribut Domain , spesifikasi mengatakan "Agen pengguna akan menolak cookie kecuali atribut Domain menentukan cakupan untuk cookie yang akan menyertakan server asal."
Karena server asal adalah
a.com
dan yang tidak termasukb.com
, itu tidak dapat diatur.Anda harus
b.com
mengatur cookie sebagai gantinya. Anda dapat melakukan ini melalui (misalnya) pengalihan HTTP keb.com
dan kembali.sumber
evil-hack.com
dapat memiliki cookietheir-favourite-website.com
yang akan mengubah preferensi mereka di situs web itu.Jika Anda memiliki
a.my-company.com
danb.my-company.com
alih-alih adila.com
danb.com
Anda dapat mengeluarkan cookie untuk.my-company.com
domain - cookie akan diterima dan dikirim ke kedua domain tersebut.sumber
lihat RFC6265 :
Tetapi solusi yang disebutkan di atas dengan gambar / iframe berfungsi, meskipun tidak disarankan karena ketidakamanannya.
sumber
Anda tidak bisa, tetapi ... Jika Anda memiliki kedua halaman maka ...
1) Anda dapat mengirim data melalui params kueri ( http://siteB.com/?key=value )
2) Anda dapat membuat iframe Situs B di dalam situs A dan Anda dapat mengirim pesan pos dari satu tempat ke tempat lain. Karena Situs B adalah pemilik cookie situs B, ia akan dapat menetapkan nilai apa pun yang Anda butuhkan dengan memproses pesan posting yang benar. (Anda harus mencegah pengirim lain yang tidak diinginkan untuk mengirim pesan kepada Anda! Terserah Anda dan mekanisme yang Anda putuskan untuk digunakan agar hal itu tidak terjadi)
sumber
Dalam link ini, kita akan menemukan solusi link .
sumber
Kirim permintaan POST dari A. Permintaan posting hanya ada di sisi server dan tidak dapat diakses oleh klien.
Anda dapat mengirim permintaan POST dari
a.com
keb.com
menggunakan CURL (disarankan, serverside) atau disembunyikanmethod="POST"
bentuk (clientside). Jika Anda memilih yang terakhir, Anda mungkin ingin mengaburkan JavaScript Anda sehingga pengguna tidak akan dapat memahami algoritma dan mengganggunya.Aktifkan gateway
b.com
untuk mengatur cookie:Jika Anda ingin membawa keamanan selangkah lebih maju, terapkan fungsi pada kedua sisi (
a.com
danb.com
) untuk mengenkripsi (aktifa.com
) dan mendekripsib.com
data (aktif ) menggunakan cypher kriptografi.Jika Anda mencoba melakukan sesuatu yang benar-benar aman (misalnya mentransfer sesi login), cobalah oAuth atau ambil inspirasi dari https://api.cloudianos.com/docs#v2/auth
sumber