Storan Kata Laluan Selamat dalam PHP: Mengapa Melangkau Pembersihan Pra-Hash?
Pembangun PHP sering mempertimbangkan kata laluan "membersihkan" (menggunakan fungsi seperti escape_string()
, htmlspecialchars()
atau addslashes()
) sebelum menyimpannya dalam pangkalan data. Walau bagaimanapun, amalan ini tidak diperlukan dan berpotensi membahayakan apabila berurusan dengan kata laluan yang dicincang.
Risiko Pembersihan Pra-Hash
Pembersihan kata laluan pra-cincang menambah kerumitan tanpa meningkatkan keselamatan. Memandangkan kata laluan yang dicincang kebal terhadap suntikan SQL, langkah pembersihan ini tidak menawarkan faedah keselamatan.
Hashing: Asas Keselamatan Kata Laluan
Pencincangan kata laluan menukar kata laluan kepada rentetan yang disulitkan sesuai untuk penyimpanan pangkalan data. Fungsi cincang merawat semua bait input secara sama rata, menjadikan pra-pemprosesan berlebihan.
Perlindungan Kata Laluan Teguh
Membenarkan penciptaan kata laluan tanpa had (panjang, jenis aksara) memastikan proses pencincangan itu sendiri menyediakan keselamatan yang mencukupi, tanpa mengira kandungan kata laluan.
Kesan Negatif Pembersihan
Memangkas, pengekodan HTML atau melepaskan kata laluan boleh menyebabkan ketidakkonsistenan semasa mengesahkan kata laluan menggunakan password_verify()
. Untuk mengekalkan ketepatan pengesahan, anda perlu menggunakan kaedah yang sama ini secara konsisten pada input pengguna, menambah kerumitan yang tidak perlu.
Ringkasnya
Abaikan pembersihan kata laluan pra-cincang. Pencincangan kata laluan sahaja dengan berkesan melindungi kata laluan yang disimpan, menghapuskan keperluan dan kemungkinan masalah pra-pemprosesan.
Atas ialah kandungan terperinci Mengapa saya tidak boleh membersihkan kata laluan sebelum hashing untuk penyimpanan yang selamat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!