Gesaan dan konteks
Sebuah SaaS berisiko rendah mahu pengguna memasukkan alamat e-mel dan menerima pautan log masuk sekali guna. Reka bentuk aliran permintaan, penghantaran, pengesahan, pembentukan sesi, pembatalan dan audit. Lindungi senario peti mel yang terjejas, pautan yang dimajukan, praambil e-mel (mail prefetch), main semula, penyalahgunaan had kadar (rate abuse) dan tindakan berisiko tinggi.
Perkara yang sedang diuji oleh penemu duga
- Sama ada anda menggunakan token sekali guna yang sukar diramal dan berjangka hayat pendek.
- Sama ada anda menghalang pengenalpastian akaun, kebocoran log dan pengesahan brute-force.
- Sama ada anda membezakan kemudahan daripada jaminan keselamatan dan ketahanan pancingan data.
- Sama ada sesi, pembatalan, pemberitahuan, audit dan sandaran lengkap dilaksanakan.
Soalan penjelasan sebelum menjawab
Sahkan risiko perniagaan, status e-mel yang disahkan, tingkah laku berbilang peranti, jangka hayat pautan, penyedia e-mel, MFA dan operasi berisiko tinggi. Pembayaran, pertukaran keistimewaan dan data sensitif memerlukan pengesahan kalis pancingan data atau pengesahan tambahan, bukannya e-mel sebagai satu-satunya faktor berkeyakinan tinggi.
Rangka jawapan 30 saat
Jana token rawak berentropi tinggi dan simpan hanya nilai cincangan (hash), tujuan, pengguna, tempoh luput dan status penggunaannya. Kembalikan respons yang sama untuk alamat yang wujud mahupun yang tidak diketahui dan hadkan kadar permintaan. Sahkan melalui HTTPS, gunakan token secara atomik, kemudian cipta sesi berjangka hayat pendek dan putarkan pengecamnya. Benarkan penggunaan sekali sahaja, audit kegagalan dan peranti luar biasa, serta batalkan apabila perlu. Keselamatan magic link mewarisi risiko saluran peti mel dan pelayar, jadi ia tidak secara automatik kalis pancingan data atau sesuai untuk setiap tahap jaminan NIST.
Analisis mendalam langkah demi langkah
1. Penjanaan dan penyimpanan
Gunakan nilai rawak yang selamat secara kriptografi sebagai parameter URL sekali guna; simpan nilai cincangannya dan bukannya teks biasa. Catatkan tujuan, pengguna, masa penciptaan dan tamat tempoh, masa penggunaan serta konteks permintaan. Bandingkan nilai cincangan dalam masa malar (constant time) dan hadkan percubaan.
2. Permintaan dan pengesahan
Kembalikan mesej, selang masa tindak balas (timing envelope) dan status yang sama bagi setiap e-mel untuk mengelakkan pengenalpastian akaun. Hadkan kadar mengikut IP, alamat, peranti dan belanjawan global, dengan kuota penghantaran e-mel. Pengesahan mesti menandakan token telah digunakan dalam transaksi atau kemas kini bersyarat atomik, menghalang dua klik serentak daripada memainkan semula token tersebut.
3. Kawalan sesi dan risiko
Selepas penggunaan, putarkan pengecam sesi, tetapkan kuki yang selamat dan maklumkan pengguna mengenai peranti serta lokasi. Sistem praambil e-mel dan pengimbas mungkin melawati pautan terlebih dahulu; gunakan halaman pengesahan perantara dan tindakan pengguna yang jelas. Wajibkan pengesahan semula, MFA atau WebAuthn untuk operasi sensitif dan bukannya menjadikan pautan sebagai kelayakan istimewa yang berjangka hayat panjang.
Contoh jawapan berkualiti tinggi
Saya mentakrifkan magic link sebagai faktor yang mudah untuk akses berisiko rendah, bukan pengesah universal yang kalis pancingan data. Selepas permintaan dibuat, perkhidmatan menggunakan CSPRNG, menyimpan hanya nilai cincangan, tujuan, tempoh luput dan status penggunaan, serta mengembalikan hasil yang sama bagi setiap alamat. Pengesah mencari nilai cincangan melalui HTTPS, menandakannya telah digunakan secara atomik, memutarkan ID sesi, menetapkan kuki yang selamat dan merekodkan peristiwa audit. Pautan adalah berjangka hayat pendek dan boleh dibatalkan; URL pautan mesti dielakkan daripada log dan analitik. Untuk mengendalikan praambil e-mel, paparkan halaman pengesahan dan wajibkan klik yang disengajakan. Untuk pemajuan e-mel dan berbilang peranti, tentukan sama ada satu kali penggunaan dibenarkan dan cara memaklumkan pemilik akaun. Pembayaran dan pertukaran keistimewaan menggunakan MFA atau WebAuthn. Ujian merangkumi main semula, klik serentak, pengenalpastian akaun, had kadar, kebocoran e-mel, peranti anomali dan pembatalan.
Kesilapan biasa
- Menyimpan token teks biasa dalam pangkalan data atau log.
- Gagal menggunakan token secara atomik, membolehkan main semula serentak.
- Mengembalikan ralat berbeza untuk alamat yang tidak diketahui sekali gus membolehkan pengenalpastian akaun.
- Menganggap magic link secara semula jadi kalis pancingan data atau setara dengan kunci perkakasan.
- Menukar pautan tamat tempoh dengan sesi berjangka hayat panjang atau mengabaikan pemberitahuan dan pembatalan.
Soalan susulan dan jawapan
Bagaimana dengan praambilan klien e-mel?
Jangan selesaikan log masuk pada permintaan lawatan GET. Paparkan halaman pengesahan, gunakan token hanya selepas tindakan pengguna yang jelas, dan bezakan telemetri praambil daripada klik sebenar.
Berapa lamakah token patut kekal aktif?
Pilih tempoh yang singkat berdasarkan peruntukan risiko dan kelewatan e-mel, kemudian pantau kadar main semula dan kadar pautan yang tidak digunakan. Selepas tamat tempoh, keluarkan token baharu daripada melanjutkan token yang lama.
Mengapakah ia tidak digunakan untuk pentadbir atau kelulusan pembayaran?
Saluran peti mel boleh dimajukan, dirampas atau dipancing data, dan NIST mengasingkan beberapa penggunaan pengesahan e-mel daripada pengesahan berkeyakinan tinggi. Tindakan berisiko tinggi memerlukan pengesahan kalis pancingan data, pengikatan transaksi (transaction binding) dan pemberitahuan bebas.