Bahasa Melayu

Alat pembangun · UUID penjana

Adakah UUID Rawak Selamat sebagai Tetapan Semula Kata Laluan atau Token Sesi?

· Mengapa ia penting

uuid kriptografi pelayar-apis

Aliran token penetapan semula kata laluan yang menunjukkan CSPRNG yang disokong UUID, storan cincang, masa tamat tempoh dan ketidaksahihan penggunaan sebagai kebimbangan berasingan
Ilustrasi vektor ToolAcre asal

A v4 UUID daripada CSPRNG mempunyai banyak entropi, jadi mengapa penyemak keselamatan masih bermasam muka pada token UUID? Siaran ini memisahkan soalan entropi daripada soalan reka bentuk.

Pautan set semula yang menggunakan UUID baris — pintasan biasa dan dua sebab yang sangat berbeza ia mungkin tidak selamat

Pintasan biasa: gunakan pengguna UUID pengecam baris sebagai token penetapan semula kata laluan. Jadual mempunyai lajur uuid; ia adalah unik; sukar untuk meneka (jika ia adalah v4). URL ialah /reset? token=550e8400-e29b-41d4-a716-446655440000. Penyemak keselamatan segera menolaknya, bukan kerana UUID lemah, tetapi kerana ia menggabungkan dua kebimbangan yang sepatutnya bebas. barisan UUID adalah stabil dan biasanya boleh dilihat secara umum (dalam URL, API, log). Token tetapan semula hendaklah digunakan sekali dan rahsia. Menggunakan semula baris UUID sebagai token bermakna identiti pengguna dan kelayakan tetapan semula mereka adalah nilai yang sama, dan kelayakan itu kekal selama-lamanya dan bukannya luput. Penyerang yang mengetahui ID pengguna boleh melakukan penetapan semula. Pengguna yang menyalin-tampal pautan tetapan semula lima tahun lalu masih boleh menggunakannya. Ini adalah kecacatan reka bentuk, bukan kecacatan entropi.

Semakan entropi: 122 bit rawak — mengapa v4 yang dijana CSPRNG tidak boleh diteka dengan kekerasan

Semakan rawak adalah perlu tetapi tidak mencukupi. Versi 4 menyimpan empat bit versi dan dua bit varian, meninggalkan 128 - 4 - 2 = 122 kedudukan rawak apabila pelaksanaan mengisi medan lain secara rawak. Derivasi itu tidak mengatakan apa-apa tentang tamat tempoh, storan atau kebenaran. Semakan penjana bertanya sama ada medan tersebut datang daripada CSPRNG dan bukannya Math.random atau cap waktu. ToolAcre memenuhi sempadan penjana itu. Semakan reka bentuk kekal khusus aplikasi: bukti kelayakan set semula memerlukan kitaran hayat yang berasingan, perwakilan disimpan sehala, ketidaksahihan selepas penggunaan berjaya dan tamat tempoh yang dipilih daripada dasar risiko perkhidmatan. Menggunakan semula ID rekod kekal pengguna gagal pemisahan itu walaupun ID dijana dengan selamat.

Semakan penjana: di mana token UUID sebenarnya gagal — penjanaan berasaskan Math.random, cap masa v1 dan alamat MAC dan benih yang boleh diramal

Contoh yang berjaya: skema tetapan semula kata laluan yang gagal, kemudian lulus, tiga semakan. Gagal semakan entropi: pelayan mengeluarkan token tetapan semula melalui Math.random(), dibungkus sebagai v4 UUID. Penyerang memerhati tiga token dan meramalkan yang keempat. Gagal menyemak penjana: pelayan menggunakan v1 UUID sebagai token tetapan semula, termasuk cap masa penciptaan dan alamat MAC dalam nilai. Penyerang membaca cap masa, mengetahui masa tetapan semula dikeluarkan dan mengecilkan tetingkap carian. Lulus semakan entropi tetapi gagal semakan reka bentuk: pelayan menggunakan v4 UUID daripada crypto.getRandomValues, tetapi menyimpannya dalam teks biasa dalam pangkalan data dan tidak menetapkan tamat tempoh. Penyerang yang melanggar pangkalan data membaca token tetapan semula dan menggunakannya untuk menetapkan semula akaun beberapa minggu kemudian. Tiga cek adalah bebas; anda mesti lulus ketiga-tiganya.

Semakan reka bentuk: pengecam berbanding kelayakan — mengapa menggunakan semula kunci utama rekod sebagai rahsia menggandingkan dua perkara yang harus berputar secara bebas

Skim token tetapan semula yang melepasi semakan entropi dan penjana tetapi gagal semakan reka bentuk (tiada cincangan, tiada tamat tempoh, tiada ketidaksahihan setiap penggunaan) masih terdedah. Mengendalikan bahagian pelayan token: apabila pengguna meminta penetapan semula kata laluan, hasilkan token rawak baharu (bukan baris UUID) daripada crypto.getRandomValues. Simpan perwakilan sehala dan bukannya nilai yang dibentangkan, tetapkan tamat tempoh khusus dasar dan batalkan rekod selepas berjaya digunakan. Apabila pengguna mengklik pautan, cari pengguna melalui e-mel, ambil cincang yang disimpan, bandingkan token yang disediakan dengan cincang, semak tamat tempoh dan laksanakan tetapan semula sahaja jika token itu sah dan belum tamat tempoh. Batalkan serta-merta token (padamkannya atau tandakannya sebagai digunakan) supaya ia tidak boleh digunakan semula. Jangan sekali-kali log token mentah; log sahaja ID pengguna dan tindakan.

Mengendalikan bahagian pelayan token — simpan cincang, tetapkan tamat tempoh, tidak sah semasa digunakan dan jangan sekali-kali log nilai mentah

Token tidak boleh muncul dalam mesej ralat atau dalam pangkalan data melainkan dicincang. Reka bentuk pengesahan penuh berada di luar skop artikel UUID, tetapi prinsipnya dipegang: token rawak 122-bit bukan merupakan token akses. Rawak adalah bahagian yang mudah; penjana ToolAcre memberi anda UUID yang disokong CSPRNG. Bahagian yang sukar ialah reka bentuk: pencincangan sebelum storan, menetapkan masa tamat tempoh, membatalkan penggunaan, menghalang penggunaan semula ID kekal sebagai rahsia sementara, mengaudit siapa yang mengakses apa dan bila. Penyemak keselamatan yang meluluskan skim pautan semula berdasarkan entropi token sahaja melangkau analisis yang lain. Pembangun yang berpendapat CSPRNG yang disokong UUID mencukupi untuk pautan tetapan semula kata laluan tanpa pencincangan, tamat tempoh dan ketidaksahihan memandang rendah ancaman itu. Rawak mempertahankan daripada meneka; reka bentuk mempertahankan daripada main semula, tamat tempoh dan penyalahgunaan.

Contoh yang berkesan — menyemak skema pautan semula terhadap setiap semakan dan menulis semula bahagian yang lemah

Penjana ToolAcre melakukan bahagian rawak dengan betul; aplikasi mesti melakukan bahagian reka bentuk dengan betul. Uji kod pautan semula anda sendiri terhadap ketiga-tiga semakan: adakah ia menggunakan CSPRNG (crypto.getRandomValues, crypto.randomUUID atau perpustakaan kriptografi), bukan Math.random? Adakah token mempunyai masa luput? Adakah token dicincang sebelum storan? Adakah token tidak sah selepas digunakan? Adakah kod tersebut mengelak daripada menggunakan semula ID kekal pengguna sebagai token sementara? Jika anda menjawab ya kepada semua ini, reka bentuk pautan set semula anda adalah baik. Penjana ToolAcre ialah bahagian CSPRNG; selebihnya ialah kod aplikasi yang anda mesti semak dengan teliti. Memahami tiga lapisan keselamatan membantu anda mengaudit perpustakaan dan rangka kerja UUID pihak ketiga. Apabila anda menilai pustaka, pastikan ia menggunakan CSPRNG (semakan entropi), bukan sumber rawak yang lemah. Semak sama ada ia mendokumenkan sumber yang digunakan dan sebabnya (semakan penjana).

Perkara yang tidak dilindungi ini — reka bentuk pengesahan penuh, MFA dan pengehadan kadar, yang penting seperti entropi token

Semak bahawa kod contoh dan dokumentasi menekankan prinsip reka bentuk: pencincangan, tamat tempoh, tidak sah (semakan reka bentuk). Perpustakaan yang lulus ketiga-tiga semakan jarang berlaku; kebanyakannya tertumpu kepada entropi sahaja. Penjana ToolAcre melepasi pemeriksaan entropi dan penjana dengan menggunakan crypto.getRandomValues. Semakan reka bentuk adalah tanggungjawab anda; perpustakaan tidak dapat mengetahui keperluan tamat tempoh atau strategi pencincangan anda. Menyahpepijat sistem pautan semula yang rosak biasanya mendedahkan salah satu daripada tiga kegagalan. Jika pengguna melaporkan menerima pautan tetapan semula yang tidak lagi berfungsi, kemungkinan isu itu telah tamat tempoh: token telah dikeluarkan tetapi tamat tempoh sebelum pengguna mengklik pautan. Jika token digunakan semula beberapa kali, ketidaksahihan akan rosak. Jika token muncul dalam mesej ralat atau output nyahpepijat, pembalakan membocorkannya. Jika pautan tetapan semula berfungsi untuk satu pengguna tetapi bukan yang lain, mungkin terdapat ketinggalan replikasi pangkalan data atau isu zon waktu dengan pengiraan tamat tempoh. Jika permintaan tetapan semula yang sah gagal secara rawak, CSPRNG mungkin rosak (jarang berlaku).

Bawa pulang: rawak adalah bahagian yang mudah — penjana ToolAcre memberi anda UUID yang disokong CSPRNG; selebihnya adalah disiplin reka bentuk

Mulakan dengan pengelogan: dayakan log audit terperinci untuk penjanaan dan pengesahan pautan semula, kemudian keluarkan semula isu dan jejak aliran. Penjana ToolAcre memastikan dua cek pertama lulus; penyelesaian masalah isu pautan semula hampir selalu termasuk dalam kategori reka bentuk. Amalan terbaik untuk sistem pautan set semula pengeluaran termasuk: menjana token rawak baharu untuk setiap permintaan tetapan semula, bukan menggunakan semula token lama. Simpan perwakilan sehala bersama metadata akaun dan penciptaan, kemudian pilih tamat tempoh daripada dasar risiko yang didokumenkan perkhidmatan. Batalkan token serta-merta selepas pengesahan berjaya. Permintaan tetapan semula log dan kejayaan untuk pengauditan. Laksanakan pengehadan kadar untuk mengelakkan serangan kekerasan. Hantar pautan tetapan semula melalui e-mel sahaja, bukan SMS atau saluran yang tidak disulitkan. Beritahu pengguna tentang percubaan set semula kata laluan (supaya mereka boleh mengesan tetapan semula tanpa kebenaran). Penjana ToolAcre memberikan anda secara rawak; mengikuti amalan ini memberi anda keselamatan.