Tôi là người mới đối với toàn bộ thế giới SPA phía khách hàng. Tôi đang sử dụng các công nghệ trên, có vẻ khá hứa hẹn. Tuy nhiên, một cú hích lớn mà tôi không thể vượt qua dễ dàng là thiếu bảo mật tích hợp. Tôi phải tự cấp phép ủy quyền người dùng, mà IMHO phải là một phần của khung công tác. Bây giờ tôi đã sắp xếp xong, tôi đang bị đau đầu nghiêm trọng với bảo mật theo chiều dọc: nơi một người dùng đăng nhập nhưng có thể dễ dàng truy cập thông tin của người dùng khác bằng cách thay đổi một vài thông số trong bảng điều khiển của trình duyệt. Tôi có thể chuyển userId với mỗi cuộc gọi và sau đó so sánh nó với một trên máy chủ, nhưng tôi đã hy vọng rằng sẽ có một giải pháp bao quát mà không gây ô nhiễm các cuộc gọi dữ liệu dễ dàng với id người dùng.Hot Towel/Durandal/Breeze.js: làm thế nào để bảo vệ các cuộc gọi dữ liệu theo chiều dọc?
Ví dụ, giả sử có một cú điện thoại từ dịch vụ dữ liệu như thế này:
function getItems(){
var query = breeze.EntityQuery.from('Items').expand("Person");
return manager.executeQuery(query);
}
này sẽ nhận được tất cả các mục, không tốt. Vì vậy, hãy giới hạn bởi userId:.
function getItems(userId){
var query = breeze.EntityQuery.from('Items').where("userId", "==", authentication.userId).expand("Person");
return manager.executeQuery(query);
}
trong ví dụ thứ hai, chúng tôi nhận được userId từ dịch vụ xác thực, mà lưu trữ các userId khi người dùng đã đăng nhập Tuy nhiên, một người sử dụng độc hại có thể dễ dàng đi trình duyệt giao diện điều khiển và thay đổi giá trị đó.
Tất nhiên, tôi có thể chuyển userId bằng cách sử dụng withParameters (...) và so sánh nó với một hiện tại trên máy chủ, nhưng tôi phải làm điều đó cho mọi cuộc gọi, điều này có vẻ không đúng. Có cách nào tốt hơn để bảo mật cuộc gọi với id người dùng đáng tin cậy không?
Hi Ward, cảm ơn bạn đã trả lời. Có, tôi đã kết thúc làm một cái gì đó rất giống với những gì bạn đã đề cập (trừ kho lưu trữ cho bây giờ), do đó, tất cả các cuộc gọi được scoped cho người dùng ở phía máy chủ. Tiếp tục công việc tốt :) –
Liên kết trong câu hỏi không còn hoạt động nữa. Có vẻ như vẫn còn một mẫu loại trực tiếp nhưng tôi không thể thấy nội dung Auth @Ward đề cập đến. https://github.com/Breeze/breeze.js.samples/tree/master/net – philreed