Mengapa kita tidak bisa menggunakan alamat IP alih-alih cookie dalam mengidentifikasi klien di servlets?

26

Saya tahu kami memiliki beberapa keuntungan tambahan dalam menggunakan cookie daripada alamat IP, tetapi pertanyaan saya adalah mengapa wadah tidak dapat hanya mengingat alamat IP klien dalam mengidentifikasi klien ketika dia mengunjungi situsnya lagi? Mungkinkah wadah mengingat klien dengan bantuan alamat IP?

JAWA
sumber
47
Alamat IP tidak unik. Apa yang terjadi ketika dua orang berada di belakang router yang sama?
Doval
7
Apa yang terjadi ketika satu orang menggunakan Tor?
12
Dan alamat IP orang mungkin sering berubah (broadband rumah).
GrandmasterB
6
Proxy muncul sebagai 1 alamat IP, terlepas dari berapa banyak orang di belakang mereka, misalnya semua orang di perusahaan.
Jeff-Inventor ChromeOS
4
@ Jeff-InventorChromeOS Dan sebaliknya, juga: beberapa ISP memiliki kelompok server proxy sehingga permintaan satu pengguna dapat tampak berasal dari beberapa alamat IP. Terakhir kali saya periksa, AOL melakukan ini, misalnya.
Jules

Jawaban:

84

Klien diidentifikasi oleh cookie serta alamat IP. Namun, alamat IP tidak dapat digunakan secara eksklusif:

  • Bagaimana jika dua klien berada di belakang firewall atau proxy NAT yang sama? Mereka akan memiliki alamat IP eksternal yang sama ke server.
  • Bagaimana jika pengguna memiliki dua browser berbeda terbuka di mesin yang sama, dan ingin dua sesi terpisah (mungkin untuk pengujian?)
  • Seorang pengguna mungkin memiliki alamat IP dinamis yang dapat berubah selama sesi.
  • Penyerang mungkin dapat menipu alamat IP dan mengambil alih sesi jika hanya mengandalkan alamat IP.

Ini berarti alamat IP tidak secara unik mengidentifikasi klien dalam semua kasus.


sumber
19
Menggunakan alamat IP sama sekali untuk mengidentifikasi klien adalah bug yang sangat besar. Alamat IP saya mungkin berubah beberapa kali dalam satu menit saat berjalan menyusuri jalan mengakses situs dari ponsel saya.
R ..
5
@ R .. Maaf, tapi ini salah. Sel radio Anda tidak ada hubungannya dengan alamat IP Anda, lapisan IP di atas komunikasi sel (menggunakan lapisan fisik) dalam model OSI. Tetap saja, menggunakan alamat IP untuk mengidentifikasi klien masih salah, tetapi tidak untuk alasan ini.
Pasang kembali Monica - dirkk
11
@ kusk Jika dia menggunakan WiFi dan terhubung ke jaringan yang berbeda, independen, dengan IP publik mereka, itu pasti bisa terjadi. Jaringan seluler juga dapat memutuskan untuk memberikan alamat IP yang berbeda saat Anda mengubah sel. Jika saya pasang (layer1) laptop saya ke jaringan yang berbeda, itu pasti bisa mengubah IP saya (layer3).
Bob
8
Saya bukan ahli tentang bagaimana perusahaan telekomunikasi nirkabel memberikan alamat IP, tetapi saya dapat berbicara dengan wifi: jika saya berjalan di jalan yang sibuk dan saya memiliki perangkat nirkabel yang dikonfigurasi untuk terhubung ke semua dan semua jaringan wifi yang bisa, saya sepenuhnya berharap alamat IP wifi-nya sering berubah.
7
@ kusk: Tolong jangan menuduh saya salah tentang sesuatu yang Anda tidak tahu. Seperti Bob diduga, saya sedang berbicara tentang wifi. Saya memiliki akses ke 8+ kafe dan titik akses bisnis lainnya, plus titik akses wifi yang disediakan kota (berkualitas lebih rendah) di sepanjang jalan, dan ponsel saya secara teratur melompat di antara mereka sambil berjalan.
R ..
18

Terkadang Anda bisa menggunakan alamat IP.

Jika Anda menggunakan LAN atau berurusan secara eksklusif dengan pengguna yang IPnya didistribusikan secara statis ke satu klien, menggunakan alamat itu sangat bagus - terkadang lebih disukai dan perlu.

Tapi, biasanya kamu tidak bisa.

Jika Anda menjalankan situs publik, sebagian besar alamat IP yang mengenai server Anda tidak statis atau berdedikasi. Sebagian besar dari mereka mewakili banyak klien: desktop, laptop, dan ponsel Anda semuanya menggunakan alamat IP yang sama ketika Anda berada di jaringan rumah Anda. Dan IP itu dapat berubah - bahkan di pertengahan sesi.

svidgen
sumber
2
Bahkan di Lan kamu tidak bisa. Jika saya membuka situs di Firefox dan Internet Explorer, saya sepenuhnya berharap untuk memiliki dua sesi yang berbeda.
Pieter B
@PieterB Saya tidak mengerti maksud Anda tentang sesi yang berbeda. Bisakah Anda jelaskan?
JAVA
1
@java ketika saya masuk ke situs web bank saya dengan Firefox, saya tidak berharap bisa masuk dengan chrome. Kedua browser bekerja secara independen dengan sesi mereka sendiri.
Pieter B
1
@PieterB Masih tergantung pada persyaratan. Jika persyaratan menyatakan bahwa setiap "sesi" harus menjangkau "semua klien web pada perangkat lokal," alamat IP mungkin adalah yang Anda inginkan.
svidgen
10

Tiga alasan lagi untuk ditambahkan:

  1. Ada workstation multiuser dan server terminal. Banyak pengguna dapat menjalankan proses browser yang sepenuhnya independen dalam sesi terpisah.
  2. Alamat IP tidak persisten. Ini bisa dipindahkan ketika penyewaan DHCP berakhir.
  3. Aplikasi harus mendukung roaming. Misalnya, pengguna pada ponsel mungkin keluar dari jangkauan WiFi dan diserahkan ke koneksi 3G. Alamat IP akan berubah, tetapi alangkah baiknya membiarkan aplikasi web tetap berfungsi.
200_sukses
sumber
2

Menggunakan alamat IP sebagai pengidentifikasi umumnya tidak disarankan, karena ini bukan tujuan dari alamat IP - secara fungsional ini adalah alamat polos untuk perutean dari a ke b, dan tidak memberi tahu apa-apa sebelum atau sesudah b.

Sebagai contoh, alamat IP yang sama dapat digunakan bersama oleh sejumlah perangkat yang terhubung, kasus yang paling umum adalah

a) penyedia yang secara dinamis memberikan kumpulan alamat kepada pelanggannya, yang cukup umum dengan membeli jumlah alamat publik yang sama dengan yang Anda dapat melayani lebih banyak pelanggan (Anda hanya perlu alamat yang cukup untuk pengguna simultan, bukan total pengguna)

b) jaringan pribadi yang mengakses web dari satu alamat, secara internal mengarahkan paket ke ratusan atau ribuan mesin

Dadu9
sumber
1

Selain itu dua komputer dapat berada di belakang NAT dan memiliki alamat IP yang sama, konsep klien Anda harus benar.

Klien sangat BUKAN komputer yang berkomunikasi dengan Anda, tetapi browser yang berjalan di komputer itu.

Browser Anda tidak terlalu peduli dengan alamat IP yang dimiliki komputer Anda, dan sistem operasi Anda tidak. Dan itu sebabnya Anda tidak bisa mengandalkan alamat-ip. Browser tidak peduli tentang cookie dan mereka berada di bawah kendali browser. Itu sebabnya Anda menggunakan cookie untuk sesi.

Pieter B
sumber