Uncategorized

Verifikasi SMS OTP tanpa menggunakan database


Saya telah membuat banyak aplikasi web yang menggunakan verifikasi OTP melalui SMS. Ini berfungsi dengan mengirimkan nomor 4 hingga 6 digit ke nomor telepon pengguna melalui SMS. Dan pengguna harus memasukkan OTP untuk memverifikasi nomor telepon.

Dalam sebagian besar kasus ini dilakukan dengan menggunakan teknik sederhana, dengan menjaga OTP dalam database atau penyimpanan memori dan mencocokkannya dengan input pengguna. Dalam artikel ini, saya akan mencoba menjelaskan bagaimana kita dapat mencapai hasil yang sama tanpa jenis database.

Tetapi sebelum kita mulai: mari kita bicara tentang motivasi di balik pendekatan ini. Operasi basis data mahal, biasanya lebih lambat dan karena bergantung pada aplikasi atau layanan lain, memiliki probabilitas untuk gagal. Alasan bagus lainnya adalah, OTP adalah data sementara. Itu bukan milik database.

Juga, jika Anda mengembangkan aplikasi tanpa server. Verifikasi OTP dapat dilakukan dengan fungsi tanpa server yang tidak tergantung pada hal lain.

Ini sekarang juga tersedia sebagai paket NPM

Saya akan membuat aplikasi yang mengirimkan OTP ke pengguna menggunakan penyedia SMS. Saya tidak akan membahas kode yang terlibat untuk mengirim SMS, karena itu bervariasi dari penyedia ke penyedia. Sebaliknya, saya hanya akan fokus pada kode verifikasi. Bahasa pilihan adalah JavaScript, tetapi kodenya harus cukup sederhana untuk diterjemahkan ke bahasa pemrograman lainnya tanpa berkeringat.

Ide Dasar:

Teknik ini melibatkan kriptografi, dalam arti tertentu sangat mirip dengan bagaimana token JWT diverifikasi. Tetapi juga sangat berbeda dari JWT karena cara data ditangani. Teknik ini dilakukan dengan menggunakan langkah -langkah berikut:

1. Buat a hash kriptografi dari nomor teleponitu OTP yang dihasilkan dan Cap waktu kedaluwarsa digabungkan.

2. Tambahkan cap waktu yang kadaluwarsa dengan hash dan kirim hash ke pengguna sebagai tanggapan dari permintaan pertama.

3. Setelah pengguna mendapatkan SMS, pengguna mengirim kembali hash, itu nomor telepon dan OTP dalam permintaan kedua.

4. Server memverifikasi OTP dengan hashing nomor telepon, OTP dikirim oleh pengguna, dan Cap waktu kedaluwarsa Itu ditambahkan dengan hash, pengguna dikirim kembali. Menggunakan kunci yang sama dan algoritma yang sama.

5. Jika cap waktu yang kedaluwarsa valid dan masih di masa depan. Dan hash yang baru dihasilkan cocok dengan yang dikirim oleh pengguna. Maka OTP otentik.

Diagram alir dari seluruh proses

Banyak yang harus diambil? Mari kita lihat beraksi. Kami akan membuat dua fungsi, satu untuk membuat hash dan dan mengirim SMS OTP, yang lain untuk memverifikasi OTP.

Kami akan menggunakan paket Node OTP-generator yang mengagumkan untuk menghasilkan kode OTP di nodeJS. Anda perlu menginstal paket ini menggunakan NPM atau YARN. Saya juga telah menghilangkan file package.json dalam contoh. Mari kita lihat kode generator hash, setiap baris dikomentari sehingga mudah dimengerti:

Fungsi ini akan mengembalikan hash. Hash perlu dikirim kembali ke pengguna sebagai respons HTTP. Ketika pengguna meminta OTP. itu <code>sendSMS fungsi, yang merupakan fungsi dummy dalam contoh ini. Di dunia nyata perlu diimplementasikan tergantung pada API vendor. Fungsi ini akan mengirim SMS ke pengguna dengan OTP.

Pengguna, setelah menerima OTP, akan mengirim hash itu datang dari permintaan pertama, nomor telepon Dan OTP ke server dan fungsi di bawah ini akan memverifikasi. Mari kita lihat kode sumbernya:

Metode ini menggunakan SHA256 Mekanisme Hashing (HMAC) untuk memastikan integritas data dan hampir selalu lebih cepat dan lebih efisien daripada sistem verifikasi OTP berbasis database.

Ini tidak memperhitungkan hal -hal seperti: penanganan kesalahan, kerangka kerja HTTP atau perutean dll. Hanya untuk menghindari kebisingan yang tidak perlu.

Kode sumber sampel lengkap tersedia dari tautan ini

(Artikel perlu ditinjau)



Verifikasi SMS OTP tanpa menggunakan database

Leave a Reply

Your email address will not be published. Required fields are marked *