Pertanyaan ini telah banyak ditanyakan, dengan pilihan kata yang berbeda (yang membuat sulit untuk mengatakan, "Cari saja!"). Fakta ini mendorong posting blog berjudul, The Panduan Komprehensif untuk Enkripsi Parameter URL di PHP .
Apa yang Ingin Dilakukan Orang Di Sini
Yang Harus Dilakukan Orang Sebagai gantinya
Penjelasan
Biasanya, orang ingin pendek URL yang tampak acak. Ini tidak memberi Anda banyak ruang untuk mengenkripsi lalu mengautentikasi ID catatan database yang ingin Anda samarkan. Melakukannya akan membutuhkan panjang URL minimum 32 byte (untuk HMAC-SHA256), yaitu 44 karakter saat dikodekan dalam base64.
Strategi yang lebih sederhana adalah membuat string acak (lihat random_compat
untuk implementasi PHP5 dari random_bytes()
dan random_int()
untuk menghasilkan string ini) dan referensi kolom itu sebagai gantinya.
Selain itu, hashid rusak dengan kriptanalisis sederhana. Kesimpulan mereka menyatakan:
Serangan yang saya jelaskan secara signifikan lebih baik daripada serangan brute force, jadi dari sudut pandang kriptografi algoritma dianggap rusak, cukup mudah untuk memulihkan garam; memungkinkan penyerang untuk menjalankan pengkodean di kedua arah dan membatalkan properti 2 untuk fungsi hash yang ideal.
Jangan mengandalkannya.