Làm thế nào an toàn là lưu trữ cục bộ?


33

Câu hỏi nói lên tất cả. Tôi muốn cung cấp dịch vụ nhưng tôi không muốn tự lưu trữ bất kỳ dữ liệu nào trong cơ sở dữ liệu. Với tất cả các tin tức gần đây về hack, có vẻ như tôi thấy rằng khách hàng có toàn quyền kiểm soát dữ liệu của họ thì tốt hơn.

Vấn đề là dữ liệu được lưu trữ có khả năng nhạy cảm. Những gì tôi sẽ làm là ... khi một khách hàng truy cập trang web sẽ có một câu hỏi "bạn đang ở trên máy tính cá nhân hay máy tính công cộng". Nếu họ ở trên một máy tính công cộng, trang web sẽ từ chối truy cập.

Nếu họ ở trên máy tính cá nhân thì họ sẽ nhắc họ đặt mật khẩu. Tất cả dữ liệu của họ sau đó sẽ được mã hóa bằng mật khẩu này. Bây giờ rõ ràng điều này không quá an toàn. Phương thức mã hóa sẽ là JavaScript và mật khẩu của họ ở dạng văn bản đơn giản vì vậy tôi cho rằng người dùng có thể hiểu được mật khẩu trong localStorage và có thể truy cập dữ liệu.

Tôi cảm thấy mặc dù điều này không quá nhiều vấn đề. Nếu bạn đang sử dụng máy tính cá nhân, khả năng điều này xảy ra rất xa vì ... người khác sẽ cần quyền truy cập vào tài khoản người dùng cụ thể của họ trên máy tính, người khác sẽ cần biết về trang web ... người khác sẽ cần hiểu localStorage và cách truy cập nó. Dữ liệu nhạy cảm không phải là bất kỳ thứ gì sẽ làm tổn hại đến danh tính của họ hoặc nhiều thứ khác. Nó chỉ ghi lại một cái gì đó mà hầu hết mọi người sẽ không thích công bố.

Vì vậy, thực sự câu hỏi là, localStorage có đủ an toàn không?

Câu hỏi bổ sung .. làm thế nào là khó khăn để lau localStorage của bạn? Tôi sẽ không muốn người dùng vô tình xóa sạch dữ liệu của họ.

Cuối cùng - có đáng để mã hóa / giải mã dữ liệu của họ như thể bạn có mật khẩu bạn có thể truy cập trang web ..


2
JavaScript phía máy khách không phải là nơi tốt nhất để thực hiện mật mã. Bất kỳ người dùng thông thái nào cũng có thể nhìn vào mã và hack vào mã hóa của bạn và làm cho nó thực sự không làm gì cả và nó chỉ chấp nhận mật khẩu được mã hóa.

Câu trả lời:


10

Làm thế nào về việc không lưu trữ mật khẩu, thậm chí không lưu trữ cục bộ? Bạn có thể sử dụng chức năng phái sinh khóa để lấy khóa từ mật khẩu. Với một lượng muối và số lần lặp hợp lý, điều này sẽ được đảm bảo an toàn.


Sẽ an toàn hơn phải không nếu mật khẩu được gửi tới PHP, sau đó tạo ra khóa phía sau hậu trường?
JasonS

Không. Mật khẩu được đưa ra trên máy khách lúc đầu. Bằng cách gửi nó đến máy chủ, bạn sẽ tăng nguy cơ bị đánh cắp. Thực hiện các dẫn xuất chính trong JS sẽ giữ bí mật về máy khách. Trong mọi trường hợp, bạn nên quên PW ngay sau đó. Nhưng tôi nghĩ nó vẫn vô nghĩa - hãy xem câu trả lời của tôi.

Nhiều tin tặc khá thông minh ... Sử dụng Lib bCrypt.
Eddie B

2

Sử dụng JavaScript với bộ nhớ cục bộ tối đa là an toàn như (máy chủ của bạn cộng với kết nối giữa trình duyệt và máy chủ).

Nếu bất kỳ ai quản lý để sửa đổi máy chủ của bạn và cung cấp các tệp JS khác nhau hoặc sửa đổi (trong khi được truyền), các tệp JS được gửi từ máy chủ đến máy khách, họ có thể làm bất cứ điều gì với dữ liệu họ muốn.

Ngoài ra: Vì dữ liệu nằm trên máy khách, bạn không thể làm gì để bảo vệ dữ liệu. Trên một máy chủ thông thường, bạn có thể hạn chế tần suất truy cập (ví dụ về mật khẩu từ xa an toàn: chỉ 1 mật khẩu được đọc trong vòng 10 phút). Tất cả điều này là vô ích nếu dữ liệu trên máy khách và tất cả các mã làm việc với dữ liệu có thể bị kẻ tấn công thao túng.

Sau tất cả ngay cả với lưu trữ cục bộ, bạn cần bảo mật ứng dụng web của mình! Tại sao làm việc trên máy chủ an toàn (hy vọng) sau đó? Nếu không tại sao không sử dụng một chương trình cục bộ được cài đặt trên máy khách?


Bạn không nghĩ vấn đề bảo mật chính là nếu thiết bị bị người khác sử dụng hoặc đánh cắp?

2

Làm thế nào về việc lấy một khóa từ máy chủ được sử dụng để giải mã dữ liệu localStorage?

Nó có thể hoạt động như thế này:

  • Khi một phiên được thiết lập, máy chủ trả về một khóa.
  • Khóa đó được sử dụng để mã hóa / giải mã dữ liệu trong localStorage.
  • Khi người dùng rời khỏi trang, khóa sẽ bị mất, ngăn người khác đọc những gì trong localStorage.

Điều này chỉ cho phép truy cập trong khi người dùng có phiên thiết lập.


3
Điều này sẽ không hoạt động để truy cập dữ liệu ngoại tuyến (có vẻ như là trường hợp sử dụng chính cho localStorage). Để sử dụng phương pháp này ngoại tuyến, bạn sẽ cần giữ lại khóa.
Timothy Lee Russell

0

nói chung không khó để xóa bộ nhớ cục bộ, nhưng nó phụ thuộc vào trình duyệt. Mặc dù vậy, bạn cần phải có được các công cụ dành cho nhà phát triển trình duyệt (fireorms, webkit, v.v.).

nghĩ về nó giống như bạn nghĩ về cookie. Bạn không bao giờ nên giữ dữ liệu nhạy cảm trong bộ nhớ cục bộ. mật khẩu, số thẻ tín dụng, bất cứ điều gì.

bạn luôn có thể thực hiện một số tính năng để xóa bộ nhớ cục bộ sau x lượng không hoạt động, nhưng điều đó sẽ không giải quyết được vấn đề bảo mật. Nó giống như một phiên tự động hết hạn. Vấn đề tương tự cũng xảy ra, nếu một người rời khỏi máy tính và sau đó một người khác ngồi xuống trước khi phiên hết hạn, họ có thể làm công việc.


0

Hai vấn đề:

  1. nếu bạn lưu trữ mật khẩu văn bản đơn giản và sau đó dựa vào thực tế không thể tìm thấy, thì đó chỉ là bảo mật thông qua che khuất. Chỉ lưu trữ dữ liệu trong văn bản rõ ràng và dựa trên cùng một giả định (vẫn không an toàn, nhưng không có cảm giác an toàn sai)

  2. trên hầu hết các trình duyệt, nếu mọi người xóa bộ nhớ cache, họ cũng sẽ xóa nội dung localStorage của họ. Mọi người không mong đợi mất dữ liệu quan trọng khi họ xóa lịch sử và bộ nhớ cache.

Tôi nghĩ rằng bạn đang vượt quá những gì localStorage có nghĩa là. Nếu bạn muốn sử dụng một cơ sở dữ liệu địa phương mà chơi tốt với các ứng dụng web, bạn có thể có một cái nhìn để CouchDB 's couchapps .

Nhưng đừng lưu trữ mật khẩu.


0

Bạn có thể sử dụng javascrypt . Hỏi người dùng mật khẩu sẽ trở thành khóa mã hóa / giải mã

Bạn không cần lưu trữ mật khẩu, nhưng yêu cầu mật khẩu mỗi khi người dùng mở trang.
Có thể được lưu trữ nó, nếu người dùng muốn, và bây giờ có ý nghĩa.

Nhưng sau đó để tham gia bình luận của stivlo, thì sao:

  1. truy cập nhiều thiết bị
  2. sao lưu
  3. Quên mật khẩu
  4. xóa bộ nhớ cache quá dễ dàng

Tôi nghĩ bạn nên xem xét lại sự bắt đầu của lý luận. Tránh đám mây chỉ vì một số sự kiện gần đây và giật gân, là một kết luận nhanh chóng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.