Saya perlu mencari cara mengidentifikasi secara unik setiap komputer yang mengunjungi situs web yang saya buat. Adakah yang punya saran tentang cara mencapai ini?
Karena saya ingin solusi bekerja pada semua mesin dan semua browser (dengan alasan) saya mencoba untuk membuat solusi menggunakan javascript.
Cookie tidak akan berhasil.
Saya membutuhkan kemampuan untuk membuat panduan yang unik untuk komputer dan dapat diulang, dengan asumsi tidak ada perubahan perangkat keras yang terjadi pada komputer. Petunjuk yang saya pikirkan adalah mendapatkan MAC dari kartu jaringan dan informasi lain yang bersifat ini yang akan membuat mesin mengunjungi situs web.
javascript
cookies
browser
itu penting
sumber
sumber
Jawaban:
Orang-orang ini telah mengembangkan metode sidik jari untuk mengenali pengguna dengan tingkat akurasi yang tinggi:
https://panopticlick.eff.org/static/browser-uniqueness.pdf
sumber
pengantar
Saya tidak tahu apakah ada atau pernah ada cara untuk mengidentifikasi mesin secara unik menggunakan browser saja. Alasan utamanya adalah:
Bahkan jika ada cara untuk melacak komputer tanpa menggunakan cookie, selalu ada cara untuk mem-bypassnya dan perangkat lunak yang akan melakukan ini secara otomatis. Jika Anda benar-benar perlu melacak sesuatu berdasarkan komputer Anda harus menulis aplikasi asli (Apple Store / Android Store / Program Windows / dll).
Saya mungkin tidak dapat memberi Anda jawaban untuk pertanyaan yang Anda ajukan tetapi saya dapat menunjukkan kepada Anda bagaimana menerapkan pelacakan sesi. Dengan pelacakan sesi, Anda mencoba melacak sesi penelusuran alih-alih komputer mengunjungi situs Anda. Dengan melacak sesi, skema basis data Anda akan terlihat seperti ini:
Keuntungan dari pelacakan berbasis sesi:
username
/password
/email
.sessionID
.Kerugian dari pelacakan berbasis sesi:
Penerapan
Ada banyak cara untuk mengimplementasikan ini. Saya tidak berpikir saya bisa membahas semuanya, saya hanya akan daftar favorit saya yang akan membuat ini menjadi pendapat yang beralasan . Ingatlah itu.
Dasar-dasar
Saya akan melacak sesi dengan menggunakan apa yang dikenal sebagai cookie selamanya. Ini adalah data yang secara otomatis akan membuat ulang dirinya sendiri bahkan jika pengguna menghapus cookie atau memperbarui browser-nya. Namun itu tidak akan bertahan hidup pengguna menghapus cookie dan cache browsing mereka.
Untuk mengimplementasikan ini saya akan menggunakan mekanisme caching browser ( RFC ), WebStorage API ( MDN ) dan cookie browser ( RFC , Google Analytics ).
Hukum
Untuk memanfaatkan id pelacakan, Anda harus menambahkannya ke kebijakan privasi Anda dan ketentuan penggunaan Anda lebih disukai di bawah Sub-heading Tracking . Kami akan menggunakan kunci berikut pada keduanya
document.cookie
danwindow.localStorage
:Pastikan Anda menyertakan tautan ke kebijakan Privasi Anda dan ketentuan penggunaan pada semua halaman yang menggunakan pelacakan.
Di mana saya menyimpan data sesi saya?
Anda dapat menyimpan data sesi di basis data situs web atau di komputer pengguna. Karena saya biasanya bekerja di situs yang lebih kecil (biarkan lebih dari 10 ribu koneksi terus menerus) yang menggunakan aplikasi pihak ke-3 (Google Analytics / Clicky / dll) yang terbaik bagi saya untuk menyimpan data di komputer klien. Ini memiliki keuntungan sebagai berikut:
dan kerugian:
UUIDS
Browser|BrowserVersion|OS|OSVersion|Processor|MozzilaMajorVersion|GeckoMajorVersion
getISP(requestIP)|getHTTPSClientKey()
FingerPrint.get()
BrowserID|ComputerID|randombytes(256)
__utma
cookie.getCookie(__utma).uniqueid
Mekanisme
Suatu hari saya menonton acara williams wendy dengan pacar saya dan benar-benar ngeri ketika pembawa acara menyarankan pemirsa untuk menghapus riwayat browser mereka setidaknya sebulan sekali. Menghapus riwayat browser biasanya memiliki efek sebagai berikut:
window.localStorage
(aww man).Sebagian besar browser modern membuat opsi ini tersedia tetapi takut bukan teman. Karena ada solusinya. Peramban memiliki mekanisme caching untuk menyimpan skrip / gambar dan hal lainnya. Biasanya bahkan jika kita menghapus riwayat kita, cache browser ini masih ada. Yang kita butuhkan adalah cara untuk menyimpan data kita di sini. Ada 2 metode untuk melakukan ini. Yang lebih baik adalah menggunakan gambar SVG dan menyimpan data kami di dalam tag-nya. Dengan cara ini data masih dapat diekstraksi bahkan jika JavaScript dinonaktifkan menggunakan flash. Namun karena itu agak rumit saya akan menunjukkan pendekatan lain yang menggunakan JSONP ( Wikipedia )
example.com/assets/js/tracking.js (sebenarnya tracking.php)
Sekarang kita bisa mendapatkan kunci sesi kami kapan saja:
window.__sid || window.localStorage.getItem("sid") || getCookie("sid") || ""
Bagaimana cara membuat tracking.js menempel di browser?
Kita dapat mencapai ini menggunakan header HTTP Cache-Control , Last-Modified, dan ETag . Kita dapat menggunakan nilai
SessionID
as untuk header etag:Last-Modified
header memberitahu browser bahwa file ini pada dasarnya tidak pernah dimodifikasi.Cache-Control
memberi tahu proksi dan gateway untuk tidak men-cache dokumen tetapi memberitahu browser untuk menyimpannya selama 1 tahun.Saat berikutnya browser meminta dokumen, itu akan mengirim
If-Modified-Since
danIf-None-Match
header. Kita dapat menggunakan ini untuk mengembalikan304 Not Modified
respons.example.com/assets/js/tracking.php
Sekarang setiap kali browser meminta
tracking.js
server kami akan merespons dengan304 Not Modified
hasil dan memaksakan eksekusi salinan lokaltracking.js
.Saya masih tidak mengerti. Jelaskan itu padaku
Mari kita anggap pengguna menghapus riwayat penjelajahan mereka dan menyegarkan halaman. Satu-satunya yang tersisa di komputer pengguna adalah salinan dari
tracking.js
cache browser. Ketika browser meminta,tracking.js
ia menerima304 Not Modified
respons yang menyebabkannya menjalankan versi pertama yangtracking.js
diterima.tracking.js
mengeksekusi dan mengembalikanSessionID
yang telah dihapus.Validasi
Misalkan Haxor X mencuri cookie pelanggan kami saat mereka masih login. Bagaimana kita melindungi mereka? Kriptografi dan sidik jari Browser untuk menyelamatkan. Ingat definisi asli kami
SessionID
adalah:Kami dapat mengubah ini menjadi:
Mana
hk = sign(Timestamp|BrowserID|ComputerID, serverKey)
.Sekarang kita dapat memvalidasi
SessionID
menggunakan algoritma berikut:Agar serangan Haxor berhasil, mereka harus:
ComputerID
. Itu berarti mereka harus memiliki penyedia ISP yang sama dengan korban (Tricky). Ini akan memberi korban kita peluang untuk mengambil tindakan hukum di negara mereka sendiri. Haxor juga harus mendapatkan kunci sesi HTTPS dari korban (Keras).BrowserID
. Siapa pun dapat menipu string User-Agent (Annoying).SessionID
(Sangat Keras). Serangan volume tidak akan berhasil karena kami menggunakan cap waktu untuk menghasilkan kunci enkripsi / penandatanganan, jadi pada dasarnya seperti menghasilkan kunci baru untuk setiap sesi. Selain itu kami mengenkripsi byte acak sehingga serangan kamus sederhana juga keluar dari pertanyaan.Kami dapat meningkatkan validasi dengan meneruskan
GoogleID
danFingerprintID
(melalui ajax atau bidang tersembunyi) dan mencocokkannya.sumber
storageFacade.setItem
dan setFem setItem. And it tries to use localStorage, but fallsback to your technique when disabled. ..Perhaps the way it works is via a single file for "diffs" i.e. each time you call
storageFacade.getItem. And then a
dari semua diff yang dibuat selama sesi yang secara otomatis dibuat sesekali.Tidak mungkin mengidentifikasi komputer yang mengakses situs web tanpa kerjasama pemiliknya. Namun, jika mereka mengizinkan Anda, Anda dapat menyimpan cookie untuk mengidentifikasi mesin ketika mengunjungi lagi situs Anda. Kuncinya adalah, pengunjung memegang kendali; mereka dapat menghapus cookie dan muncul sebagai pengunjung baru kapan saja mereka mau.
sumber
Kemungkinan menggunakan flash cookies :
Anda harus membuat film flash kecil (tersembunyi) untuk membaca dan menulisnya.
Apa pun rute yang Anda pilih, pastikan pengguna Anda memilih untuk dilacak, jika tidak, Anda melanggar privasi mereka dan menjadi salah satu dari orang jahat.
sumber
Adobe announced that Flash Player 10.3 enables Mozilla Firefox 4 and "future releases of Apple Safari and Google Chrome" to delete local shared objects,[11] so since version 4, Firefox treats LSOs the same way as HTTP cookies - deletion rules that previously applied only to HTTP cookies now also apply to LSOs.
Anda mungkin ingin mencoba menetapkan ID unik di evercookie (ini akan bekerja lintas browser, lihat FAQ mereka): http://samy.pl/evercookie/
Ada juga perusahaan bernama ThreatMetrix yang digunakan oleh banyak perusahaan besar untuk menyelesaikan masalah ini: http://threatmetrix.com/our-solutions/solutions-by-product/trustdefender-id/ Mereka cukup mahal dan beberapa produk mereka yang lain tidak terlalu bagus, tetapi id perangkat mereka berfungsi dengan baik.
Akhirnya, ada implementasi jquery open source dari ide panopticlick ini: https://github.com/carlo/jquery-browser-fingerprint Ini terlihat setengah matang saat ini tetapi dapat diperluas.
Semoga ini bisa membantu!
sumber
Click to rediscover cookies
dan lihat null atau undefined. Jadi ini tidak berhasil untuk sayaAda metode populer yang disebut sidik jari kanvas, yang dijelaskan dalam artikel ilmiah ini: Web Tidak Pernah Menghemat: Mekanisme Pelacakan Persisten di Alam Liar . Setelah Anda mulai mencarinya, Anda akan terkejut betapa seringnya digunakan. Metode ini menciptakan sidik jari yang unik, yang konsisten untuk setiap kombinasi browser / perangkat keras.
Artikel ini juga mengulas metode pelacakan gigih lainnya, seperti evercookies, respawning http dan Flash cookies, dan sinkronisasi cookie.
Info lebih lanjut tentang sidik jari kanvas di sini:
sumber
Hanya ada sedikit informasi yang bisa Anda dapatkan melalui koneksi HTTP.
IP - Tetapi seperti yang orang lain katakan, ini tidak diperbaiki untuk banyak orang, jika tidak sebagian besar pengguna Internet karena kebijakan alokasi dinamis ISP mereka.
Useragent String - Hampir semua browser mengirim jenis browser apa saja dengan setiap permintaan. Namun, ini dapat diatur oleh pengguna di banyak browser saat ini.
Kumpulan bidang permintaan - Ada bidang lain yang dikirim bersama setiap permintaan, seperti penyandian yang didukung, dll. Ini, jika digunakan dalam agregat dapat membantu mengidentifikasi mesin pengguna, tetapi sekali lagi bergantung pada browser dan dapat diubah.
Cookie - Menetapkan cookie adalah cara lain untuk mengidentifikasi mesin, atau lebih khusus browser pada mesin, tetapi seperti yang dikatakan orang lain, ini dapat dihapus, atau dimatikan oleh pengguna, dan hanya berlaku pada browser, bukan mesin.
Jadi, respons yang benar adalah bahwa Anda tidak dapat mencapai apa yang Anda jalani hanya melalui protokol HTTP over IP. Namun, menggunakan kombinasi cookie, serta IP, dan bidang dalam permintaan HTTP, Anda memiliki peluang bagus untuk menebak, semacam, mesin apa itu. Pengguna cenderung menggunakan hanya satu browser, dan seringkali dari satu mesin, jadi ini mungkin cukup dapat diandalkan, tetapi ini akan bervariasi tergantung pada audiens ... teknisi lebih cenderung mengacaukan hal ini, dan menggunakan lebih banyak mesin / browser. Selain itu, ini bahkan dapat digabungkan dengan beberapa upaya untuk melakukan geo-lokasi IP, dan menggunakan data itu juga. Tetapi bagaimanapun juga, tidak ada solusi yang akan benar setiap saat.
sumber
Ada kekurangan dengan pendekatan cookie dan non-cookie. Tetapi jika Anda bisa memaafkan kekurangan dari pendekatan cookie, inilah sebuah ide.
Jika Anda sudah menggunakan Google Analytics di situs Anda, maka Anda tidak perlu menulis kode untuk melacak pengguna unik sendiri. Google Analytics melakukan itu untuk Anda melalui nilai
__utma
cookie, seperti yang dijelaskan dalam dokumentasi Google . Dan dengan menggunakan kembali nilai ini Anda tidak membuat payload cookie tambahan, yang memiliki manfaat efisiensi dengan permintaan halaman.Dan Anda dapat menulis beberapa kode dengan cukup mudah untuk mengakses nilai itu, atau menggunakan fungsi skrip ini
getUniqueId()
.sumber
getUniqueId()
browser yang berbeda di mesin yang sama?Karena dengan solusi sebelumnya, cookie adalah metode yang baik, perlu diketahui bahwa mereka mengidentifikasi browser . Jika saya mengunjungi situs web di Firefox dan kemudian di Internet Explorer, cookie akan disimpan untuk kedua upaya secara terpisah. Beberapa pengguna juga menonaktifkan cookie (tetapi lebih banyak orang menonaktifkan JavaScript).
Metode lain yang perlu dipertimbangkan adalah identifikasi IP dan nama host (perlu diketahui bahwa ini dapat bervariasi untuk pengguna IP dial-up / non-statis, AOL juga menggunakan selimut IP). Namun karena ini hanya mengidentifikasi jaringan, ini mungkin tidak berfungsi sebaik cookie.
sumber
Saran untuk menggunakan cookie, satu-satunya set atribut pengidentifikasi yang tersedia untuk diinterogasi terkandung dalam header permintaan HTTP. Jadi dimungkinkan untuk menggunakan beberapa himpunan bagian dari ini untuk membuat pengidentifikasi unik semu untuk agen pengguna (yaitu, browser). Lebih lanjut, sebagian besar informasi ini mungkin sudah masuk dalam apa yang disebut "log akses" perangkat lunak server web Anda secara default dan, jika tidak, dapat dengan mudah dikonfigurasi untuk melakukannya. Kemudian, sebuah utlity dapat dikembangkan yang hanya memindai isi log ini, membuat sidik jaridari setiap permintaan yang terdiri dari, katakanlah, alamat IP dan string Agen Pengguna, dll. Semakin banyak data yang tersedia, bahkan termasuk konten cookie tertentu, menambah kualitas keunikan sidik jari ini. Meskipun, seperti yang telah dinyatakan oleh banyak orang lainnya, protokol HTTP tidak membuat ini 100% sangat mudah - yang terbaik hanya bisa menjadi indikator yang cukup baik.
sumber
Ini adalah jenis otentikasi yang cukup umum digunakan oleh bank.
Katakanlah Anda sedang mengakses situs web bank Anda melalui example-isp.com. Pertama kali Anda di sana, Anda akan diminta kata sandi, serta otentikasi tambahan. Setelah Anda lulus, bank tahu bahwa pengguna "yang penting" diautentikasi untuk mengakses situs melalui example-isp.com.
Di masa depan, itu tidak akan meminta otentikasi tambahan (di luar kata sandi Anda) ketika Anda mengakses situs melalui example-isp.com. Jika Anda mencoba mengakses bank melalui another-isp.com, bank akan melalui rutin yang sama lagi.
Jadi untuk meringkas, apa yang mengidentifikasi bank adalah ISP dan / atau netblock Anda, berdasarkan alamat IP Anda. Jelas tidak semua pengguna di ISP Anda adalah Anda, itulah sebabnya bank masih meminta kata sandi Anda.
Pernahkah Anda memiliki panggilan perusahaan kartu kredit untuk memverifikasi bahwa semuanya OK ketika Anda menggunakan kartu kredit di negara lain? Konsep yang sama.
sumber
Sungguh, apa yang ingin Anda lakukan tidak dapat dilakukan karena protokol tidak memungkinkan untuk ini. Jika IP statis digunakan secara universal maka Anda mungkin dapat melakukannya. Mereka tidak, jadi Anda tidak bisa.
Jika Anda benar-benar ingin mengidentifikasi orang , minta mereka masuk.
Karena mereka mungkin akan berpindah ke berbagai halaman di situs web Anda, Anda perlu cara untuk melacaknya saat mereka bergerak.
Selama mereka masuk, dan Anda melacak sesi mereka di dalam situs Anda melalui cookie / tautan-parameter / suar / apa pun, Anda dapat yakin bahwa mereka menggunakan komputer yang sama selama waktu itu.
Pada akhirnya, tidak benar untuk mengatakan ini memberitahu Anda komputer mana yang mereka gunakan jika pengguna Anda tidak menggunakan jaringan lokal Anda sendiri dan tidak memiliki alamat IP statis.
Jika apa yang ingin Anda lakukan dilakukan dengan kerjasama pengguna dan hanya ada satu pengguna per cookie dan mereka menggunakan satu browser web, cukup gunakan cookie.
sumber
Cookie tidak akan berguna untuk menentukan pengunjung unik. Seorang pengguna dapat menghapus cookie dan menyegarkan kembali situs - ia kemudian digolongkan sebagai pengguna baru lagi.
Saya berpikir bahwa cara terbaik untuk melakukan ini adalah dengan mengimplementasikan solusi sisi server (karena Anda akan memerlukan tempat untuk menyimpan data Anda). Bergantung pada kompleksitas kebutuhan Anda untuk data tersebut, Anda perlu menentukan apa yang digolongkan sebagai kunjungan unik. Metode yang masuk akal adalah dengan memungkinkan alamat IP untuk kembali pada hari berikutnya dan diberi kunjungan unik. Beberapa kunjungan dari satu alamat IP dalam satu hari tidak boleh dianggap sebagai unik.
Menggunakan PHP, misalnya, sepele untuk mendapatkan alamat IP pengunjung, dan menyimpannya dalam file teks (atau database sql).
Solusi sisi server akan bekerja pada semua mesin, karena Anda akan melacak pengguna ketika ia pertama kali memuat situs Anda. Jangan gunakan javascript, karena itu dimaksudkan untuk skrip sisi klien, ditambah pengguna mungkin telah menonaktifkannya dalam hal apa pun.
Semoga itu bisa membantu.
sumber
Bukankah itu alasan yang sangat bagus untuk tidak menggunakan javascript?
Seperti yang orang lain katakan - cookie mungkin adalah pilihan terbaik Anda - hanya perlu menyadari keterbatasannya.
sumber
Anda dapat menggunakan sidik jarijs2
Setelah itu Anda dapat memeriksa semua pengguna Anda terhadap yang ada dan memeriksa kesamaan JSON, jadi bahkan jika sidik jari mereka bermutasi, Anda masih dapat melacak mereka
sumber
Saya kira putusannya adalah saya tidak dapat secara unik mengidentifikasi komputer yang mengunjungi situs web saya.
Saya punya pertanyaan berikut. Ketika saya menggunakan mesin yang belum pernah mengunjungi situs web perbankan online saya, saya diminta untuk otentikasi tambahan. kemudian, jika saya kembali untuk kedua kalinya ke situs perbankan online saya tidak akan diminta otentikasi tambahan. membaca jawaban untuk pertanyaan saya saya memutuskan itu harus melibatkan cookie. oleh karena itu, saya menghapus semua cookie di IE dan masuk kembali ke situs perbankan online saya sepenuhnya berharap untuk ditanyai pertanyaan otentikasi lagi. saya terkejut saya tidak diminta. Bukankah ini membuat orang percaya bahwa bank melakukan semacam penandaan pc yang tidak melibatkan cookie?
lebih lanjut, setelah banyak googling hari ini saya menemukan perusahaan berikut yang mengklaim menjual solusi yang mengidentifikasi mesin unik yang mengunjungi situs web. http://www.the41.com/products.asp .
Saya menghargai semua informasi yang baik jika Anda dapat memperjelas lebih lanjut informasi yang saling bertentangan ini yang saya temukan saya akan sangat menghargainya.
sumber
Saya akan melakukan ini menggunakan kombinasi cookie dan cookie flash. Buat GUID dan simpan dalam cookie. Jika cookie tidak ada, cobalah untuk membacanya dari cookie flash. Jika masih belum ditemukan, buat dan tuliskan ke cookie flash. Dengan cara ini Anda dapat berbagi GUID yang sama di seluruh browser.
sumber
Saya pikir cookie mungkin apa yang Anda cari; ini adalah cara sebagian besar situs web mengidentifikasi pengunjung secara unik.
sumber
Dengan asumsi Anda tidak ingin pengguna memegang kendali, Anda tidak bisa. Web tidak berfungsi seperti itu, yang terbaik yang bisa Anda harapkan adalah beberapa heuristik.
Jika ini merupakan opsi untuk memaksa pengunjung Anda menginstal beberapa perangkat lunak dan menggunakan TCPA, Anda mungkin dapat melakukan sesuatu.
sumber
Posting saya mungkin bukan solusi, tetapi saya bisa memberikan contoh, di mana fitur ini telah diterapkan.
Jika Anda mengunjungi halaman pendaftaran
www.supertorrents.org
untuk pertama kalinya dari komputer Anda, tidak apa-apa. Tetapi jika Anda me-refresh halaman atau membuka halaman lagi, itu mengidentifikasi Anda sebelumnya telah mengunjungi halaman. Keindahan nyata datang ke sini - mengidentifikasi bahkan jika Anda menginstal ulang Windows atau OS lainnya.Saya membaca bahwa mereka menyimpan ID CPU. Walaupun saya tidak dapat menemukan bagaimana mereka melakukannya, saya sangat meragukannya, dan mereka mungkin menggunakan alamat MAC untuk melakukannya.
Saya pasti akan berbagi jika saya menemukan cara melakukannya.
sumber
Sebuah tipuan:
Buat 2 Halaman Registrasi:
Halaman Pendaftaran Pertama: tanpa email atau pemeriksaan keamanan (hanya dengan nama pengguna dan kata sandi)
Halaman Pendaftaran Kedua: dengan tingkat keamanan tinggi (permintaan verifikasi email dan gambar keamanan, dll.)
Untuk kepuasan pelanggan, dan pendaftaran yang mudah, halaman registrasi standar harus menjadi (Halaman Pendaftaran Pertama) tetapi di (Halaman Pendaftaran Pertama) ada batasan tersembunyi. Ini Pembatasan IP. Jika IP mencoba mendaftar untuk kedua kalinya, (misalnya kurang dari 1 jam) alih-alih menampilkan halaman blokir. Anda dapat menampilkan (Halaman Registrasi Kedua) secara otomatis.
Harap dicatat: (Halaman Registrasi Pertama) dan (Halaman Registrasi Kedua) tidak boleh di halaman terpisah. Anda hanya membuat 1 halaman. (misalnya: register.php) dan buatlah cerdas untuk beralih antara Gaya PHP Pertama dan Gaya PHP Kedua
sumber