Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Ẩn ID đối tượng cơ sở dữ liệu thực trong url

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()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ó.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách tham gia ba bàn bằng mô hình hùng biện laravel

  2. Làm cách nào để chọn toàn bộ hàng có ID lớn nhất trong bảng?

  3. Làm cách nào để tìm các ký tự không phải ASCII trong MySQL?

  4. Cách đếm các mục trong danh sách MySQL được phân tách bằng dấu phẩy

  5. Nhập từ và xuất sang tệp bằng dòng lệnh MySQL