Làm cách nào để bạn đảm bảo đúng cách người dùng không giả mạo giá trị chuỗi truy vấn hoặc giá trị url hành động? Ví dụ, bạn có thể có một hành động Xóa nhận xét trên CommentController của bạn, trong đó có một CommentID. Url hành động có thể trông giống như/Nhận xét/Xóa/3 để xóa nhận xét bằng id 3.Bảo mật với giá trị QueryString trong Asp.net MVC
Bây giờ rõ ràng bạn không muốn bất kỳ ai có thể xóa nhận xét 3. Thông thường về chủ sở hữu của nhận xét hoặc quản trị viên có cho phép làm như vậy. Tôi đã thấy bảo mật này thực thi các cách khác nhau và muốn biết một số bạn làm như thế nào.
Bạn có thực hiện nhiều cuộc gọi cơ sở dữ liệu để truy xuất nhận xét và kiểm tra xem tác giả của nhận xét có khớp với người dùng gọi hành động xóa không?
Thay vào đó bạn có vượt qua CommentID và UserID xuống thủ tục được lưu trữ, người thực hiện xóa và thực hiện Xóa nơi UserID và CommentID bằng các giá trị được chuyển vào không?
Có tốt hơn để mã hóa các giá trị chuỗi truy vấn không?
Sau đó, làm thế nào để bạn đề nghị tôi sửa/xóa mọi thứ sau đó? Hãy nhớ rằng tôi đang sử dụng Asp.net MVC – Vyrotek
Bạn nên POST cho các phương thức điều khiển của mình để gọi xóa - và xác minh thông tin đăng nhập yêu cầu (cookie/username/password/whatever) trước khi thực hiện xóa. Xem bài đăng của @ Schotime. –