Gần đây tôi đã thừa hưởng cơ sở mã ASP.NET MVC 4. Một vấn đề tôi lưu ý là việc sử dụng một số id cơ sở dữ liệu (ints) trong các url cũng như trong việc gửi biểu mẫu html. Mã trong trạng thái hiện tại của nó là có thể khai thác thông qua cả hai URL tinkering và tạo các bài viết HTML tùy chỉnh với các số khác nhau.Làm cách nào để ngăn không cho HTML của tôi bị khai thác trong khi tránh GUID?
Bây giờ trong khi tôi có thể dễ dàng khắc phục sự cố URL bằng cách sử dụng trạng thái phiên hoặc kiểm tra auth bổ sung, tôi ít chắc chắn hơn về id cơ sở dữ liệu được nhúng vào HTML mà trang web thoát ra (tức là tôi cung cấp cho họ trình đơn thả xuống lấp đầy). Khi các id trở lại trong một bài viết như thế nào tôi có thể chắc chắn tôi đặt chúng ở đó như là các tùy chọn hợp lệ? Điều gì được coi là "thực hành tốt nhất" về giải quyết vấn đề này?
Trong khi tôi đánh giá cao tôi chỉ có thể "GUID nó lên" Tôi do dự để làm như vậy bởi vì tôi thấy họ một nỗi đau trong ass để làm việc với khi gỡ lỗi cơ sở dữ liệu.
Tôi có lựa chọn ở đây không? Tôi có phải GUID để ngăn chặn dễ đoán các id hoặc có một số loại cơ chế DRY mà tôi có thể sử dụng để xác thực việc sử dụng các id khi chúng quay trở lại trang web không?
CẬP NHẬT: Người nhận xét hỏi về các lần khai thác mà tôi đang mong đợi. Cho phép nói rằng tôi nhổ ra một hình thức HTML với một danh sách thả xuống của tất cả các địa điểm người ta có thể nhập khẩu "kho báu" từ. Id của các vị trí mà người dùng sở hữu là 1,2 và 3, những vị trí này được cung cấp trong HTML. Nhưng người dùng kiểm tra html, fiddles với nó và quyết định đặt cùng một POST với id của 4 được chọn. 4 không phải là vị trí của anh ta, của người khác.
Bạn muốn khai thác cơ chế nào? Bạn đang ở đâu trong tình huống không thích hợp dữ liệu có thể ảnh hưởng đến hệ thống của bạn? Sử dụng GUID không làm bất cứ điều gì vốn an toàn hơn. – PhonicUK
Cập nhật OP cho bạn. Các hướng dẫn an toàn hơn trong trường hợp này bởi vì bạn không thể đoán được chúng. – Quibblesome