Anda tidak boleh menyimpan kata sandi dalam teks biasa saat mengonfirmasi pengguna atau melakukan hal serupa.
Karena banyak orang menggunakan kata sandi yang sama, jika penyerang menemukan basis data kata sandi yang tidak terenkripsi, mereka dapat dengan mudah digunakan bersama dengan email yang cocok untuk masuk ke situs web atau akun yang ditautkan dan bahkan digunakan untuk mencoba mengakses akun lain.
Kata sandi sering di-hash hari ini ketika kata sandi diberikan. Disarankan untuk hash dengan garam dan simpan garam bersama dengan kata sandi hash.
Pengasinan mungkin tampak seperti salah satu langkah dalam resep untuk hash brown, tetapi dalam kriptografi, ini mengacu pada penambahan data acak ke input fungsi hash untuk memastikan bahwa hash akan selalu memberikan hasil yang unik bahkan jika inputnya sama.
Akibatnya, hash khas yang dibuat dengan menambahkan garam dapat melindungi kita dari beberapa metode serangan, termasuk serangan tabel hash, sambil melumpuhkan kamus dan upaya offline brute-force.
Di sini, dengan bantuan cuplikan kode, kami akan menunjukkan cara menggunakan 'bcrypt' untuk mengamankan kata sandi Anda.
Jadi, apa itu 'bcrypt'?
Bcrypt adalah pustaka hashing yang mendukung beberapa bahasa dan menyediakan enkripsi kata sandi khusus. Untuk meningkatkan keamanan kata sandi Anda, itu secara otomatis menghasilkan karakter acak tambahan (garam) saat mengenkripsi string Anda.
Anda juga dapat memilih untuk menentukan berapa banyak karakter tambahan yang ingin Anda tambahkan ke string yang masuk.
Pustaka bcrypt hanya membaca kode byte, bukan string mentah. Oleh karena itu, sebelum mengirimkan string kata sandi yang masuk ke bcrypt untuk enkripsi, Anda harus terlebih dahulu menyandikannya.
Enkripsi dan encoding bukanlah hal yang sama. Itu hanya memastikan string dapat dibaca mesin sebelum ditutup-tutupi oleh teknik enkripsi.
Menggunakan bcrypt untuk Mengenkripsi Kata Sandi dengan Python
Python membuat enkripsi kata sandi bcrypt menjadi sederhana. Kami akan berkonsentrasi untuk melakukan ini tanpa bantuan kerangka kerja. Tapi jangan khawatir, jika Anda memahami cara menyimpan input pengguna dan membacanya dari database, prosedurnya sama dalam kerangka kerja.
Instalasi
Anda hanya perlu mengatur lingkungan virtual Python dan kemudian menggunakan IDE seperti PyCharm. Perpustakaan kemudian harus diinstal terlebih dahulu:
Mengenkripsi kata sandi
Mari kita lihat cara menggunakan bcrypt untuk mengenkripsi teks setelah diinstal:
Kode Python yang disebutkan di atas mengeksekusi dan mengeluarkan string byte terenkripsi. Tetapi setiap kali Anda menjalankan skrip, hasilnya berbeda. Bcrypt menggunakan metode ini untuk memastikan setiap pengguna memiliki kata sandi yang dienkripsi secara khusus.
Itu, kebetulan, untuk enkripsi kata sandi.
Perbandingan Kata Sandi dan Konfirmasi Menggunakan Bcrypt
Apa yang terjadi jika Anda ingin menyimpan kata sandi yang di-hash dan memeriksanya nanti untuk melihat apakah itu cocok dengan kata sandi yang dikirimkan pengguna untuk otentikasi?
Itu sederhana. Hanya sandi otentikasi yang harus dibandingkan dengan entri database (atau dalam memori dalam kasus ini).
Kata sandi otentikasi juga harus dikodekan sebelum dibandingkan dengan yang ada di database karena bcrypt hanya dapat membaca string byte. Pada dasarnya, Anda akan membandingkan input otentikasi yang disandikan dengan kata sandi hash yang dikodekan yang saat ini Anda miliki di database Anda.
Mari kita uji ini dengan menggunakan input Python fiktif:
Setelah menjalankan kode yang disebutkan di atas, Anda akan diminta untuk memasukkan kata sandi baru. Ini disimpan dalam memori oleh Python. Di bagian otentikasi, Anda kemudian akan memasukkan kata sandi yang sama, yang bersifat pribadi untuk Anda.
Jika kata sandi dibandingkan dan kata sandi yang sebelumnya dienkripsi dan disimpan kecocokannya, Python memancarkan pesan sukses.
Jika tidak, pesan kesalahan dicetak dan kemudian kalimat else ditambahkan.
Ide dasarnya identik dengan mendaftar dan kemudian memasok kata sandi ke database untuk otentikasi.
Kesimpulan
Meskipun kami hanya menggunakan kata sandi terenkripsi untuk menunjukkan bagaimana bcrypt berfungsi dalam memori pendek Python biasa, penerapannya yang sebenarnya terletak pada aplikasi berbasis pengguna.
Namun demikian, artikel ini menunjukkan metode penting untuk mengatur kode Anda untuk mencapai hal ini, bahkan dalam keadaan dunia nyata.
Misalnya, jika Anda menggunakan Flask, Anda dapat memberikan bidang pendaftaran dan otentikasi melalui formulir web terpisah alih-alih input.
Tentu saja, saat membandingkan kata sandi, Anda akan membaca dari database yang berisi kata sandi terenkripsi yang disimpan di dunia nyata.
Jona Nitch
Terima kasih atas penjelasan sederhana dan sederhana ini,
Ini banyak membantu saya dalam proyek saya saat ini.
Menurut saya, sangat bagus jika kode contoh dibatasi seminimal mungkin dan tidak kelebihan beban seperti banyak penjelasan lainnya.
salam Hormat