Câu hỏi này đã được hỏi rất nhiều, với các lựa chọn từ khác nhau (khiến bạn khó nói, "Chỉ cần tìm kiếm nó!"). Thực tế này đã thúc đẩy một bài đăng trên blog có tiêu đề The Hướng dẫn Toàn diện về Mã hóa Tham số URL trong PHP .
Mọi người muốn làm gì ở đây
Mọi người nên làm gì thay thế
Giải thích
Thông thường, mọi người muốn ngắn URL tìm kiếm ngẫu nhiên. Điều này không cho phép bạn có nhiều chỗ để mã hóa rồi xác thực ID bản ghi cơ sở dữ liệu mà bạn muốn làm xáo trộn. Làm như vậy sẽ yêu cầu độ dài URL tối thiểu là 32 byte (đối với HMAC-SHA256), là 44 ký tự khi được mã hóa trong base64.
Một chiến lược đơn giản hơn là tạo một chuỗi ngẫu nhiên (xem random_compat
để triển khai PHP5 của random_bytes()
và random_int()
để tạo các chuỗi này) và tham chiếu cột đó thay thế.
Ngoài ra, hashids bị hỏng bằng cách phân tích mật mã đơn giản. Kết luận của họ nêu rõ:
Cuộc tấn công mà tôi đã mô tả là tốt hơn đáng kể so với một cuộc tấn công vũ phu, vì vậy từ quan điểm mật mã, thuật toán được coi là bị phá vỡ, khá dễ dàng để khôi phục muối; khiến kẻ tấn công có thể chạy mã hóa theo một trong hai hướng và làm mất hiệu lực thuộc tính 2 cho một hàm băm lý tưởng.
Đừng dựa vào nó.