๐ฏ Poin-Poin Utama Modul Ini:
- Password mentah DILARANG disimpan di database!
- Menggunakan
PasswordHash.recommended()dari pwdlib (Argon2 + bcrypt) - Verifikasi login dengan
password_hash.verify(plain, hashed)
๐ Hashing Password Keamanan Tinggi
Mengamankan kredensial akun pengguna dengan hashing satu arah sebelum disimpan ke tabel database. Hashing berbeda dari enkripsi: ia tidak bisa dibalik, sehingga bocornya isi tabel tidak langsung membocorkan password.
โ ๏ธ Jangan pakai passlib lagi.
Banyak tutorial lama memakai passlib.context.CryptContext. Passlib sudah tidak dipelihara (rilis stabil terakhir 1.7.4 tahun 2020) dan rusak ketika dipasangkan dengan bcrypt versi 4.1 ke atas karena pembacaan atribut __about__ yang sudah dihapus. Dokumentasi resmi FastAPI kini memakai pwdlib.
pip install "pwdlib[argon2,bcrypt]"
๐ง Kenapa Argon2 Lebih Dianjurkan dari Bcrypt
- Argon2id adalah pemenang Password Hashing Competition dan direkomendasikan OWASP. Ia mahal di memori, bukan hanya di CPU, sehingga jauh lebih tahan terhadap serangan GPU/ASIC.
- Bcrypt masih aman, tetapi punya batas keras 72 byte โ karakter setelah byte ke-72 diam-diam diabaikan. Ini jebakan nyata untuk password panjang atau passphrase.
PasswordHash.recommended()memakai Argon2 untuk hash baru namun tetap bisa memverifikasi hash bcrypt lama, sehingga migrasi bisa bertahap.