Theo Microsoft's documentation on NEWSEQUENTIALID
, đầu ra của NEWSEQUENTIALID có thể dự đoán được. Nhưng dự đoán được như thế nào? Giả sử tôi có GUID được tạo bởi NEWSEQUENTIALID
, mức độ khó khăn như sau:Dự đoán NEWSEQUENTIALID như thế nào?
- Tính giá trị tiếp theo?
- Tính giá trị trước đó?
- Tính giá trị đầu tiên?
- Tính giá trị đầu tiên, ngay cả khi không biết bất kỳ GUID nào?
- Tính số lượng hàng? Ví dụ. khi sử dụng số nguyên,
/order?id=842
cho tôi biết rằng có 842 đơn đặt hàng trong ứng dụng.
Dưới đây là một số thông tin cơ bản về những gì tôi đang làm và sự cân bằng khác nhau là gì.
Một trong những bảo mật lợi ích của việc sử dụng GUID trên các số nguyên làm khóa chính là GUID khó đoán. Ví dụ. giả sử một hacker thấy URL giống như /user?id=845
, anh ấy có thể truy cập /user?id=0
, vì có thể người dùng đầu tiên trong cơ sở dữ liệu là người dùng quản trị. Hơn nữa, tin tặc có thể lặp lại trên /user?id=0..1..2
để nhanh chóng thu thập tất cả người dùng.
Tương tự, bảo mật nhược điểm của số nguyên là chúng rò rỉ thông tin. /order?id=482
cho tôi biết rằng cửa hàng web đã có 482 đơn đặt hàng kể từ khi triển khai.
Thật không may, sử dụng GUID làm khóa chính có hiệu suất nổi bật là hiệu suất. Để kết thúc này, SQL Server đã giới thiệu hàm NEWSEQUENTIALID
. Trong câu hỏi này, tôi muốn tìm hiểu làm thế nào dự đoán đầu ra của NEWSEQUENTIALID
là.
Phản hồi tuyệt vời và toàn diện! –