To pytanie było często zadawane, z innym doborem słów (co sprawia, że trudno powiedzieć:„Po prostu poszukaj tego!”). Fakt ten skłonił do opublikowania posta na blogu zatytułowanego The Kompleksowy przewodnik po szyfrowaniu parametrów URL w PHP .
Co ludzie chcą tutaj robić
Co ludzie powinni zrobić zamiast tego
Wyjaśnienie
Zazwyczaj ludzie chcą krótkie losowo wyglądające adresy URL. To nie daje dużo miejsca na szyfrowanie, a następnie uwierzytelnianie identyfikator rekordu bazy danych, który chcesz zaciemnić. Wykonanie tego wymagałoby minimalnej długości adresu URL 32 bajty (dla HMAC-SHA256), co oznacza 44 znaki po zakodowaniu w base64.
Prostszą strategią jest wygenerowanie losowego ciągu (patrz random_compat
dla implementacji PHP5 random_bytes()
i random_int()
do generowania tych ciągów) i zamiast tego odwołaj się do tej kolumny.
Ponadto hashidy są zepsute przez prostą kryptoanalizę. Ich konkluzja stwierdza:
Opisany przeze mnie atak jest znacznie lepszy niż atak brute force, więc z punktu widzenia kryptograficznego algorytm jest uważany za zepsuty, dość łatwo jest odzyskać sól; umożliwiając atakującemu uruchomienie kodowania w dowolnym kierunku i unieważnienie właściwości 2 dla idealnej funkcji mieszającej.
Nie polegaj na tym.