2010-04-15 33 views
12

Tôi đang xem xét giải pháp ứng dụng web ngoại tuyến bằng HTML5. Chức năng là mọi thứ tôi cần NHƯNG dữ liệu được lưu trữ có thể được truy vấn trực tiếp ngay trong trình duyệt và do đó hoàn toàn không an toàn!Bảo mật DB Web HTML5

Có cách nào để mã hóa/ẩn để dữ liệu được bảo mật không?

Cảm ơn, D.

+0

hãy xem thêm ở đây: http://stackoverflow.com/questions/5976046/html5-client-side-data-encryption-what- là-my-options/6686558 # 6686558 – user832834

Trả lời

20

Có hai mối quan tâm để lưu trữ địa phương trong HTML5 -

  1. Một trang web đọc ẩn dữ liệu mà một trang web khác đã được lưu trữ trong trình duyệt người dùng
  2. cuối Một người sử dụng truy vấn dữ liệu ngoại tuyến trên trang web của bạn trực tiếp

Đối với 1, trình duyệt thực thi các hạn chế cùng miền với localStorage (hoặc sqllit hỗ trợ cơ sở dữ liệu điện tử mà safari có), vì vậy các trang web khác sẽ không có quyền truy cập vào dữ liệu mà bạn lưu trữ. Tuy nhiên, hãy nhớ rằng nếu trang web của bạn có lỗ hổng XSS, nó sẽ có thể ăn cắp dữ liệu.

Đối với 2, bạn không thể ngăn điều đó. Nó giống như một cookie - người dùng có thể chọn xem/xóa/sửa đổi nó.

Mã hóa dữ liệu là có thể (xem http://farfarfar.com/scripts/encrypt/), nhưng vô nghĩa. Bạn không thể có một khóa/mật khẩu chung duy nhất - vì kẻ tấn công có thể dễ dàng tìm ra khóa từ mã javascript. Sử dụng mật khẩu do người dùng nhập để mã hóa/giải mã là có thể, nhưng các thư viện mã hóa phía máy khách không đủ trưởng thành hoặc được thử nghiệm đủ tốt. Có khả năng tấn cách để phá vỡ nó.

Vì vậy, hiện tại ít nhất, không lưu trữ dữ liệu nhạy cảm trong localStorage.

+0

Liên kết tới http://farfarfar.com/scripts/encrypt/ không hoạt động – Brian

+2

http://code.google.com/p/gwt-crypto/ là thư viện mã hóa trưởng thành an toàn để sử dụng trong mã phía máy khách (mặc dù nó sử dụng GWT) – Tyson

2

Nếu bạn đang lưu trữ dữ liệu trên máy tính của người dùng, người dùng luôn có thể đọc nó, dù có bao nhiêu bạn mã hóa nó [giả sử bạn không sử dụng một băm ...]

dữ liệu nhạy cảm tiếp tục phía máy chủ, luôn luôn.

+1

Không nhất thiết. Nếu dữ liệu được mã hóa chỉ có thể được giải mã bằng khóa mà bạn phải nhận từ máy chủ mỗi lần (nghĩa là nó không được lưu trữ ở bất kỳ đâu trong JS hoặc trên trang) và nếu máy chủ chỉ cung cấp khóa khi người dùng được xác thực một cách an toàn , sau đó giữa các phiên hợp pháp của người dùng, dữ liệu được mã hóa cục bộ là an toàn. –

+0

Hashing cũng không phải là mã hóa. – Nisk

+0

@ Mr.TA sẽ không hoạt động trong trường hợp ngoại tuyến. – drogon

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