2012-04-25 29 views
7

Trong trường hợp bạn muốn lưu trữ dữ liệu phụ thuộc vào người dùng trong localStorage (ví dụ: vì nhiều người dùng có thể sử dụng cùng một trình duyệt cho trang web của bạn), bạn thường đối phó với trường hợp này như thế nào?Cách xử lý localStorage cho nhiều người dùng?

Hãy tưởng tượng rằng tôi có thể xác định người dùng bằng một cái gì đó như một số duy nhất userId ở mặt trước. Tôi có thể sẽ làm một việc như sau:

// retrieve the data 
data = JSON.parse(window.localStorage.getItem(userId)) || {}; 

// persist the data 
window.localStorage.setItem(userId, JSON.stringify(data)); 

Đây có phải là cách ngây thơ để làm việc không?

CHỈNH SỬA: Sau khi cho nó thêm một chút suy nghĩ theo @ MДΓΓ БДL và các nhận xét khác, hãy giả sử dữ liệu nhạy cảm. Trong trường hợp đó, ví dụ trên thực sự là ngây thơ. Bất kỳ ý tưởng nào về cách xử lý dữ liệu nhạy cảm trong trường hợp này? Hoặc là câu trả lời có lẽ: không làm điều đó, lưu nó trên back-end?

+0

Nó không phải là _secure_, nếu đó là những gì bạn đang yêu cầu. –

+0

Thông tin bí mật như thế nào? Trừ khi JSON có cơ chế xác thực riêng, người dùng có thể dễ dàng giả mạo danh tính của mình. – vol7ron

+0

@ MДΓΓБДLL: Không, bạn đúng về điều đó. Tôi đã không nghĩ rằng điều này cũng đủ, nhưng bây giờ, chúng ta hãy chỉ giả định nó không phải là dữ liệu nhạy cảm. Chỉ cần một số ưu đãi tầm thường chẳng hạn. –

Trả lời

4

Dữ liệu nhạy cảm sẽ không bao giờ được lưu trữ trên máy khách. Trừ khi bạn có thể đảm bảo tính bảo mật vật lý của máy tính và/hoặc đảm bảo rằng người dùng đã đăng nhập trên máy tính đó sẽ chỉ bao giờ là người dùng máy tính (cả hai đều không đúng), thì không lưu trữ thông tin nhạy cảm trên khách hàng nếu bạn có thể tránh nó.

Nhiều, nhiều, an toàn hơn nhiều để lưu trữ thông tin nhạy cảm trên máy chủ và yêu cầu thông tin đăng nhập thích hợp trước khi cung cấp thông tin đó cho trình duyệt. Sau đó, bạn có thể kiểm soát bảo mật vật lý của dữ liệu trên máy chủ của mình và ngăn chặn bất kỳ người dùng nào truy cập dữ liệu không phải của họ. Hơn nữa, bạn có thể bảo vệ nó trên máy bay bằng SSL.

Nếu bạn thực sự muốn lưu trữ nội dung chỉ khả dụng cho một người dùng và một máy tính và một trình duyệt trên máy tính đó, bạn có thể nhắc mật khẩu và sử dụng mật khẩu đó để mã hóa/giải mã dữ liệu được lưu trữ trong bộ nhớ cục bộ . Ngoại trừ một hoạt động ngoại tuyến tạm thời, tôi hiện không chắc chắn lý do tại sao đó sẽ là trải nghiệm người dùng tốt hơn so với lưu trữ trên máy chủ nơi có thể có sẵn cho người dùng đó bất kể họ truy cập internet như thế nào. Trong những ngày truy cập di động, truy cập máy tính bảng, truy cập máy tính xách tay, v.v ... có vẻ như xu hướng lưu trữ nội dung trên đám mây nhiều hơn, do đó người dùng nhất định có thể truy cập dữ liệu của họ qua bất kỳ truy cập internet nào yêu cầu họ sử dụng cùng một máy tính.

+0

Lưu ý rằng có thể lưu trữ dữ liệu nhạy cảm trên máy khách * nếu * nó được mã hóa và bảo vệ bằng MAC theo cách không dễ uốn. Khung web của bạn có thể cung cấp một cách để làm điều này; nếu nó không làm phiền việc lăn của bạn trừ khi bạn là đồ nóng với mật mã. – Venge

+0

Vâng, tôi nghĩ về việc mã hóa dữ liệu cục bộ bằng mật khẩu người dùng (ví dụ như AES, hoặc một cái gì đó tương tự) theo nhận xét của @ chester1000 bên dưới câu hỏi của tôi. Tôi muốn xây dựng trên [ZeroBin] (http://sebsauvage.net/paste/) và những ý tưởng tương tự, mà bạn có thể đã nghe nói đến. –

+0

@fireeyedboy - Tôi đã thêm nhận xét về mã hóa cục bộ. – jfriend00

Các vấn đề liên quan