it-swarm-id.com

Mengapa melewatkan id sesi sebagai parameter url tidak aman?

Saya baru-baru ini mengikuti diskusi, di mana satu orang menyatakan bahwa melewati id sesi karena parameter url tidak aman dan cookie harus digunakan sebagai gantinya. Orang lain mengatakan sebaliknya dan berpendapat bahwa Paypal, misalnya, melewatkan id sesi sebagai parameter url karena alasan keamanan.

Apakah melewatkan id sesi sebagai parameter url benar-benar tidak aman? Mengapa cookie lebih aman? Kemungkinan apa yang dimiliki penyerang untuk kedua opsi (cookie dan parameter url)?

59
Jonathan Egerton

Apakah melewatkan id sesi sebagai parameter url benar-benar tidak aman?

Meskipun tidak secara inheren tidak aman , ini bisa menjadi masalah kecuali kodenya dirancang dengan sangat baik.

Katakanlah saya mengunjungi forum favorit saya. Itu masuk saya dan menambahkan ID sesi saya ke URL di setiap permintaan. Saya menemukan topik yang sangat menarik, dan menyalin & menempel URL ke pesan instan ke teman saya.

Kecuali jika aplikasi telah mengambil langkah-langkah untuk memastikan bahwa ada beberapa bentuk validasi pada ID sesi, teman yang mengklik tautan itu dapat mewarisi sesi saya, dan kemudian akan dapat melakukan apa pun yang dapat saya lakukan, seperti saya.

Dengan menyimpan pengidentifikasi sesi di cookie, Anda sepenuhnya menghilangkan masalah berbagi tautan.

Ada variasi pada tema ini yang disebut fixation sesi , yang melibatkan yang disengaja berbagi pengidentifikasi sesi untuk tujuan jahat. Artikel Wikipedia yang ditautkan membahas tentang cara kerja serangan ini dan perbedaannya dari berbagi yang tidak disengaja dari pengidentifikasi sesi.

Mengapa cookie lebih aman?

Cookie dapat lebih aman di sini, karena mereka bukan sesuatu yang dapat disalin dan ditempelkan oleh pengguna normal, atau bahkan dilihat dan dimodifikasi. Itu adalah standar yang jauh lebih aman.

Kemungkinan apa yang dimiliki penyerang untuk kedua opsi?

Baik dari metode ini aman dari serangan man-in-the-middle melalui komunikasi yang tidak terenkripsi. Add-on browser, spyware dan nasties sisi klien lainnya juga dapat memata-matai kedua metode penyimpanan pengidentifikasi sesi.

Dalam kedua kasus, validasi sisi server bahwa klien yang mengklaim memiliki ID sesi adalah praktik terbaik. Terdiri dari apa validasi ini untuk diperdebatkan. Perlu diingat bahwa pengguna di belakang proxy perusahaan dapat melompat di antara alamat IP antara permintaan, jadi mengunci sesi ke alamat IP dapat secara tidak sengaja mengasingkan orang. Artikel fixation sesi menyebutkan beberapa alternatif bermanfaat lainnya.

76
Charles

Sebagian besar situs web menyimpan status login pengguna mereka ke dalam sesi, dan jika penyerang memiliki id sesi, ia juga mendapat hak istimewa dari pengguna yang login. Dengan kata lain, dua masalah dalam menjaga sesi dan otentikasi sering digabungkan.

Satu masalah adalah itu, mudah untuk membuat fixation sesi serangan. Dalam hal ini seorang penyerang akan mengirim URL yang disiapkan dengan id sesi yang diketahui kepada pengguna. Jika pengguna mengklik URL ini dan melakukan login, penyerang akan melakukan sesi dengan hak istimewa. Jika situs web memerlukan cookie, maka URL yang disiapkan dalam email tidak akan cukup.

Jika sebuah situs menggunakan HTTP yang dicampur dengan HTTPS, id akan dikirimkan plaintext di URL untuk semua permintaan HTTP (bahkan untuk permintaan gambar). Jadi jika penyerang dapat membaca satu permintaan HTTP setelah pengguna masuk, ia tahu id sesi.

Jalan keluar dari masalah adalah dengan memisahkan dua masalah, mempertahankan sesi dan otentikasi. Anda kemudian dapat membiarkan id sesi tidak terlindungi, hanya untuk mempertahankan sesi, dan menggunakan cookie terpisah untuk memeriksa status login. Cookie ini harus dikonfigurasi agar hanya dikirim ke halaman HTTPS.

23
martinstoeckli

Selain apa yang dikatakan Charles dan Martin, memasukkan apa pun di URL membuatnya lebih mungkin bocor. Ini bisa melalui tajuk Referer di sumber daya yang ditautkan, dari akses ke titik akhir dengan catatan riwayat browser, dari sniffing sejarah brute force, log web yang dilindungi secara tidak tepat, dan sebagainya. Jadi umumnya tidak disarankan untuk menyimpan apa pun yang Anda inginkan dirahasiakan di string URL/kueri.

Saya belum pernah melihat Paypal menggunakan ID sesi server di URL. Tidak mungkin itu benar-benar lebih aman daripada cookie; alasan biasanya dilakukan di masa lalu adalah untuk mendukung browser tanpa cookie diaktifkan. Ini semakin kurang menjadi perhatian akhir-akhir ini, dan masalah kegunaan dari tidak berbagi tautan, selain serangan fiksasi sesi, berarti bahwa sesi-in-URL biasanya dihindari hari ini.

15
bobince

Sesuatu yang saya lihat beberapa tahun yang lalu adalah seseorang menyalin URL (DENGAN sessionid) ke Twitter. Semua pengikut kemudian memiliki akses penuh ke akun orang tersebut di situs itu.

Jadi ya, menempatkan sessionID di URL adalah ide yang buruk.

7
Niels Basjes