Tôi đã nghe mọi người giảng bài ở đây và trên internet rằng đó là cách tốt nhất để che khuất các id cơ sở dữ liệu đối mặt công khai trong các ứng dụng web. Tôi cho rằng chúng chủ yếu có nghĩa là trong các hình thức và trong các url, nhưng tôi chưa bao giờ đọc bất cứ điều gì nhiều hơn một câu nói về chủ đề này.
EDIT : Tất nhiên, bây giờ khi tôi hỏi điều này, tôi tìm thấy một số tài nguyên về chủ đề này:
- /programming/2374538/obscuring-database-ids
- /programming/1895685/should-i-obscure-primary-key-values
- http://joshua.schachter.org/2007/01/autoincrement.html
Các liên kết này thỏa mãn một số sự tò mò của tôi, nhưng các bài đăng SO không có nhiều phiếu bầu và không nhất thiết tập trung vào chủ đề trong bối cảnh này vì vậy tôi không chắc nên làm gì và một số trong số họ cho rằng thứ ba liên kết là không có thật. Tôi sẽ để nguyên phần còn lại của bài viết của mình:
Tôi hiểu sự khác biệt giữa tối nghĩa và bảo mật, cũng như cách hai người có thể làm việc cùng nhau, nhưng tôi không thể tưởng tượng được tại sao điều này lại cần thiết.
Có bất kỳ sự thật nào về điều này, nó chỉ là hoang tưởng, hay nó hoàn toàn không có thật?
Tôi có thể nghĩ ra cách để làm điều đó, nhưng tất nhiên nó làm tăng thêm sự phức tạp cho mã ứng dụng. Trong hoàn cảnh nào điều này sẽ hữu ích? Nếu đây là điều mọi người thường xuyên làm, nó thường được triển khai như thế nào? Băm các định danh? Thứ gì khác? Có vẻ như rất nhiều công việc không bảo mật nhiều. Tôi không tìm kiếm giải pháp thực sự, tôi chỉ muốn biết một lý do tại sao mọi người sẽ làm điều này trong thế giới thực.
Đây thực sự được coi là một "thực tiễn tốt nhất" hay nó chỉ là một tối ưu hóa vi mô có giá trị nhỏ?
LƯU Ý : Tôi nghĩ rằng một vài người có thể đã hiểu sai: Tôi không cho rằng các id khó đoán sẽ là cơ chế bảo mật duy nhất , rõ ràng sẽ có các kiểm tra truy cập thông thường. Giả sử những cái đó được đặt đúng chỗ và chỉ cần biết id hoặc mã băm của bản ghi là không đủ để cấp quyền truy cập.