2012-01-14 10 views
5

Tôi đang làm việc trên trang web Asp.Net MVC 3/knockout.js cho một số người dùng, nơi họ có thể lưu thông tin về trang web của họ Đây là phiên bản đơn giản của mô hìnhThực hành tốt nhất để xử lý lưu trữ an toàn thông qua các bài viết Ajax asp.net MVC 3

class{ 
string Id 
string Name 
string Url 
string Description 
} 

Tôi muốn xây dựng một giao diện người dùng rất đáp ứng vì vậy tất cả lưu tải vv sẽ được thực hiện thông qua Ajax.

Vì vậy, kịch bản là khi người dùng đã thêm các trang web som vào danh sách của mình và nhấp vào lưu chuỗi json được đăng lên Actionmethod trong bộ điều khiển.

Mọi thứ hoạt động tốt.

Sự cố là:

Làm cách nào để đảm bảo người dùng không giả mạo id và thực sự lưu thông tin về một số trang web của người dùng khác?

Id tất nhiên là đột ngột, nhưng bất kỳ người xấu nào có kiến ​​thức về web đều có thể dễ dàng thay đổi id.

+0

Bạn không xác thực người dùng trước đó? Bạn không thể sử dụng User Identity? –

Trả lời

2

Bạn nên sử dụng xác thực. Trang trí hành động sẽ thực hiện cập nhật với thuộc tính Authorize. Điều này sẽ đảm bảo rằng người dùng đang gửi yêu cầu AJAX được xác thực và anh ta không thể thay đổi tên người dùng của mình. Sau đó, bạn sẽ kiểm tra trong cơ sở dữ liệu của bạn nếu id của trang web mà anh đang cố gắng cập nhật thuộc về anh ta. Tất nhiên, bạn sẽ có một bảng chứa bản đồ giữa người dùng và trang web.

Nếu người dùng giảm id trang web và đặt một số giá trị của trang web không thuộc về anh ấy, bạn trong hành động điều khiển sẽ phát hiện khi bạn thực hiện truy vấn để xác minh xem id trang web có thuộc về một tên người dùng. Anh ta không thể giả mạo tên người dùng của mình vì nó được lưu trữ trong cookie xác thực được mã hóa, trừ khi tất nhiên anh ta đăng nhập bằng một tên người dùng khác trong trường hợp đó anh ta đã biết mật khẩu.