Lompat ke konten utama

Kompetisi Ajak Teman: hadiah total Rp1.000.000 tunai untuk 3 pengajak terbanyak. Berakhir 29 November 2026. Ikut kompetisi

←

Pemrograman Web Aman: Input, Query, dan Hak Akses

Pelajaran 12 dari 14

Autentikasi, otorisasi, dan pengujian akses

Menyimpan kata sandi: hash bergaram yang lambat

Setelah pelajaran ini kamu bisa menyimpan kata sandi sebagai PBKDF2-HMAC-SHA256 dengan garam acak per pengguna dan jumlah putaran yang ikut disimpan, lalu memverifikasinya dengan perbandingan waktu-tetap.

±14 menitDiperiksa 7 Okt 2026

Materi

Perbedaan hash dan enkripsi sudah dibahas di kelas Keamanan Siber untuk Organisasi; di sini yang ditulis adalah kodenya. OWASP menyebut tiga syarat: kata sandi tidak pernah disimpan sebagai teks polos atau terenkripsi, hash-nya memakai algoritma yang sengaja lambat seperti Argon2id, bcrypt, atau PBKDF2, dan setiap kata sandi diberi garam unik. SHA-256 biasa terlalu cepat: penyerang yang mencuri tabel bisa mencoba miliaran tebakan. NIST SP 800-63B mewajibkan garam minimal 32 bit dan meminta garam serta hash disimpan untuk setiap kata sandi, beserta parameter biayanya supaya bisa dinaikkan kelak.

Pustaka standar Python menyediakan hashlib.pbkdf2_hmac("sha256", sandi, garam, putaran). Garam dibuat dengan secrets.token_bytes(16), dan rekaman yang disimpan berisi garam, putaran, dan hash. Saat masuk, hash dihitung ulang dengan garam dan putaran dari rekaman itu, lalu dibandingkan dengan hmac.compare_digest. Jumlah putaran untuk produksi diambil dari panduan OWASP terbaru, karena angkanya naik seiring perangkat keras; latihan memakai 1.000 putaran supaya cepat.

import hashlib, hmac, secrets

garam = secrets.token_bytes(16)
kunci = hashlib.pbkdf2_hmac("sha256", "Bakso-Malang-2026".encode(), garam, 1000)
rekaman = {"garam": garam, "putaran": 1000, "hash": kunci}

coba = hashlib.pbkdf2_hmac("sha256", "bakso-malang-2026".encode(), rekaman["garam"], rekaman["putaran"])
print(hmac.compare_digest(coba, rekaman["hash"]))   # False

Latihan

0/3 lulus

Jawaban diperiksa di server. Lulus berarti kamu memahami contohnya, bukan penilaian seluruh pekerjaanmu.

Latihan 3 dari 3

Di tabel pengguna sebuah aplikasi, kolom hash untuk akun Rina dan akun Budi berisi nilai yang persis sama. Keduanya disimpan dengan PBKDF2-HMAC-SHA256 dan jumlah putaran yang sama. Apa yang paling mungkin hilang dari cara penyimpanannya?

Pilih satu jawaban

Catatanmu

Memuat catatan…

tersimpan otomatis, ikut tercetak · 0/4.000

Luluskan semua latihan dulu untuk menandai pelajaran ini selesai.

Lanjutkan ke