Anda tidak boleh menyimpan kata laluan dalam teks biasa semasa mengesahkan pengguna atau melakukan sesuatu yang serupa.
Memandangkan ramai individu menggunakan kata laluan yang sama, jika penyerang menemui pangkalan data kata laluan yang tidak disulitkan, mereka boleh digunakan dengan mudah bersama-sama dengan e-mel yang sepadan untuk memasuki tapak web atau akaun yang dipautkan dan juga digunakan untuk cuba mengakses akaun lain.
Kata laluan sering dicincang hari ini apabila kata laluan dibekalkan. Adalah dinasihatkan untuk mencincang dengan garam dan menyimpan garam bersama-sama dengan kata laluan yang dicincang.
Pengasinan mungkin kelihatan seperti salah satu langkah dalam resipi untuk coklat cincang, tetapi dalam kriptografi, ia merujuk kepada menambah data rawak pada input fungsi cincang untuk memastikan cincang akan sentiasa memberikan hasil yang unik walaupun input adalah sama.
Akibatnya, cincangan tersendiri yang dibuat dengan menambahkan garam boleh melindungi kami daripada beberapa kaedah serangan, termasuk serangan jadual cincang, sambil menyekat percubaan luar talian kamus dan kekerasan.
Di sini, dengan bantuan coretan kod, kami akan menunjukkan cara menggunakan 'bcrypt' untuk melindungi kata laluan anda.
Jadi, apakah itu 'bcrypt'?
Bcrypt ialah perpustakaan pencincangan yang menyokong beberapa bahasa dan menyediakan penyulitan kata laluan khas. Untuk meningkatkan keselamatan kata laluan anda, ia secara automatik menghasilkan aksara rawak tambahan (garam) apabila menyulitkan rentetan anda.
Anda juga boleh memilih untuk menentukan bilangan aksara tambahan yang ingin anda tambahkan pada rentetan masuk.
Pustaka bcrypt hanya membaca kod bait, bukan rentetan mentah. Oleh itu, sebelum menyerahkan rentetan kata laluan masuk ke bcrypt untuk penyulitan, anda mesti mengekodnya terlebih dahulu.
Penyulitan dan pengekodan bukanlah perkara yang sama. Ia hanya memastikan rentetan boleh dibaca mesin sebelum ditutup oleh teknik penyulitan.
Menggunakan bcrypt untuk Menyulitkan Kata Laluan dalam Python
Python menjadikan penyulitan kata laluan bcrypt mudah. Kami akan menumpukan pada melakukan ini tanpa bantuan rangka kerja. Tetapi jangan risau, jika anda memahami cara menyimpan input pengguna dan membacanya dari pangkalan data, prosedurnya adalah sama dalam rangka kerja.
Pemasangan
Anda hanya perlu menyediakan persekitaran maya Python dan kemudian menggunakan IDE seperti PyCharm. Perpustakaan kemudiannya mesti dipasang terlebih dahulu:
Menyulitkan kata laluan
Mari lihat cara menggunakan bcrypt untuk menyulitkan teks selepas ia dipasang:
Kod Python yang disebutkan di atas melaksanakan dan mengeluarkan rentetan bait yang disulitkan. Tetapi setiap kali anda menjalankan skrip, hasilnya berbeza. Bcrypt menggunakan kaedah ini untuk memastikan setiap pengguna mempunyai kata laluan yang disulitkan secara khusus.
Itu, secara kebetulan, adalah untuk penyulitan kata laluan.
Perbandingan dan Pengesahan Kata Laluan Menggunakan Bcrypt
Apakah yang berlaku jika anda ingin menyimpan kata laluan yang dicincang dan semak kemudian untuk melihat sama ada ia sepadan dengan kata laluan yang diserahkan pengguna untuk pengesahan?
Itu mudah. Hanya kata laluan yang mengesahkan mesti dibandingkan dengan entri pangkalan data (atau dalam ingatan dalam kes ini).
Kata laluan pengesahan juga mesti dikodkan sebelum dibandingkan dengan kata laluan dalam pangkalan data kerana bcrypt hanya boleh membaca rentetan bait. Pada asasnya, anda akan membandingkan input pengesahan yang dikodkan dengan kata laluan cincang yang dikodkan yang anda ada dalam pangkalan data anda.
Mari kita uji ini dengan menggunakan input Python rekaan:
Setelah menjalankan kod yang disebutkan di atas, anda digesa untuk kata laluan baharu. Ini disimpan dalam ingatan oleh Python. Dalam bahagian pengesahan, anda kemudiannya akan memasukkan kata laluan yang sama, yang peribadi kepada anda.
Jika kata laluan dibandingkan dan kata laluan yang disulitkan sebelum ini dan disimpan padanan, Python mengeluarkan mesej kejayaan.
Jika tidak, mesej ralat dicetak dan kemudian ayat lain ditambah.
Idea asas adalah sama dengan pendaftaran dan kemudian membekalkan kata laluan kepada pangkalan data untuk pengesahan.
Kesimpulan
Walaupun kami hanya menggunakan kata laluan yang disulitkan untuk menunjukkan cara bcrypt berfungsi dalam ingatan pendek Python biasa, kebolehgunaan sebenarnya terletak pada apl asas pengguna.
Walau bagaimanapun, artikel ini menunjukkan kaedah penting untuk mengatur kod anda untuk mencapai ini, walaupun dalam keadaan dunia sebenar.
Contohnya, jika anda menggunakan Flask, anda boleh menyediakan medan pendaftaran dan pengesahan melalui borang web yang berasingan dan bukannya input.
Sudah tentu, semasa membandingkan kata laluan, anda akan membaca daripada pangkalan data yang mengandungi kata laluan yang disulitkan yang disimpan di dunia nyata.
Jona Nitsch
Terima kasih atas penjelasan yang ringkas dan ringkas ini,
Ini banyak membantu saya dalam projek semasa saya.
Saya fikir ia adalah sangat baik bahawa kod contoh adalah terhad kepada minimum dan tidak terbeban seperti banyak penjelasan lain.
Best regards