Chỉ hai xu của tôi, nhưng đây có thể không phải là một ý tưởng tốt. Để diễn giải loạt bài xuất sắc của Eric Lippert trên GUID ( phần 1 , phần 2 , phần 3 ), từ viết tắt là GUID, không phải GSUID - Mã định danh duy nhất toàn cầu, không phải Định danh duy nhất bảo mật toàn cầu.
Vấn đề nằm ở chỗ khi GUID được tạo trong phạm vi không thù địch, chẳng hạn như mọi người sử dụng NEWID (), tất cả các giá trị đều được đảm bảo là duy nhất (tốt, sắp xếp, xem bài viết của Eric, phần 3). Nhưng nếu một thực thể thù địch xâm nhập vào phạm vi đó, cả hai đều có thể dự đoán GUID được tạo tiếp theo, cũng như tự gây ra va chạm.
Bằng cách tạo phương thức riêng của bạn để tạo ra một giá trị mà bạn lưu trữ bên trong một cấu trúc trông giống như GUID, về cơ bản bạn đã trở thành một thực thể thù địch. Bạn đã thay đổi hợp đồng của GUID từ duy nhất thành ngẫu nhiên . Trong khi ai đó giỏi toán hơn tôi có thể chứng minh bạn vẫn là duy nhất, điều đó chỉ nằm trong giới hạn của phương pháp thế hệ của bạn. Nếu bạn trộn các GUID giả này với GUID NEWID (), tất cả các cược sẽ bị tắt.
Tôi nói điều này có thể không phải là một ý tưởng tốt chỉ vì tôi không biết toàn bộ phạm vi về cách bạn đang sử dụng các giá trị. Nếu bạn là thực thể duy nhất tạo ra các giá trị (không trộn lẫn và khớp) và / hoặc bạn không duy trì các giá trị và / hoặc bạn không quan tâm đến xung đột, điều này có thể không thành vấn đề. Nếu bất kỳ mục nào trong số đó không đúng, bạn có thể muốn đánh giá lại.
4
. Nhưng thực tế là tôi không có bằng chứng mạnh mẽ rằng họ có thể đoán được không có nghĩa là họ không có. Tôi không thể dựa trên quyết định bảo mật này.