Mật khẩu được lưu trữ trong văn bản thuần túy, trừ khi mật khẩu chính được sử dụng.
Khi mọi người nói rằng bạn phải lưu trữ băm mật khẩu, họ đang nói về lưu trữ phía máy chủ , không phải phía máy khách.
Phía máy chủ
Khi bạn có trang web của riêng mình khi người dùng có thể đăng ký / đăng nhập bằng mật khẩu của họ, bạn không cần (và không bao giờ) tự lưu trữ mật khẩu:
Bạn không cần lưu trữ mật khẩu đơn giản , vì bạn chỉ phải xác minh rằng mật khẩu được sử dụng trong quá trình đăng nhập khớp với mật khẩu do người dùng cung cấp trong khi đăng ký. Bạn có thể làm điều đó với băm, vì các mật khẩu khác nhau sẽ có các giá trị băm khác nhau.
Bạn không được lưu trữ mật khẩu đơn giản . Nếu trang web của bạn bị hack thì sao? Hơn nữa, nhiều người sử dụng lại mật khẩu nhiều lần, do đó, thực tế bạn cung cấp cho bất kỳ hacker nào khả năng truy cập tài khoản Facebook, tài khoản mail của người dùng, v.v.
Phía khách hàng
Trình duyệt là khác nhau. Họ lưu trữ mật khẩu trên máy khách và phải có mật khẩu gốc chứ không phải băm.
Điều này có nghĩa là những mật khẩu đó được lưu trữ trong văn bản thuần túy trong hầu hết các trường hợp.
An ninh khôn ngoan, nó không quá quan trọng. Những mật khẩu được lưu trữ trong một thư mục thuộc tài khoản người dùng. Điều này có nghĩa là tùy thuộc vào hệ điều hành (và cho người dùng) để định cấu hình đúng các quyền đối với tệp người dùng và để hạn chế quyền truy cập vào tệp chứa mật khẩu cho chính người dùng.
Trải nghiệm người dùng khôn ngoan, đây là điều dễ làm nhất. Một khả năng khác là mã hóa các mật khẩu đó bằng mật khẩu chính, trong trường hợp đó , người dùng sẽ phải cung cấp mật khẩu chính mỗi lần mở trình duyệt . Tôi khá chắc chắn rằng hầu hết người dùng sẽ không bao giờ thích điều đó.
Nếu mật khẩu chủ được lưu trữ ở đâu đó, vấn đề tương tự sẽ phát sinh: nếu bạn lưu mật khẩu chính ở dạng văn bản đơn giản thì vấn đề là gì? Nếu bạn mã hóa nó, bạn phải có mật khẩu chính chủ.
Đồng bộ hóa
Lưu ý rằng hầu hết các trình duyệt cho phép người dùng đồng bộ hóa dữ liệu của họ trên nhiều máy. Đồng bộ hóa sử dụng máy chủ từ xa để lưu trữ cookie, lịch sử, dấu trang và mật khẩu. Ví dụ: Chrome sử dụng máy chủ Google để lưu trữ dữ liệu này.
Trong trường hợp này, mật khẩu không bao giờ được lưu trữ trong văn bản thuần túy trên các máy chủ đồng bộ , nếu không, đó sẽ là một vấn đề bảo mật. Trong Chrome, bạn phải chọn mật khẩu chính để đồng bộ hóa (hoặc sử dụng mật khẩu từ tài khoản Google của bạn). Mật khẩu chủ này sẽ được sử dụng để mã hóa mật khẩu (luôn luôn) và các dữ liệu khác như lịch sử hoặc dấu trang (tùy chọn).
Để đơn giản, bạn có thể tưởng tượng rằng các mật khẩu khác nhau có thể có cùng giá trị băm. Về lý thuyết, điều này là sai, vì va chạm có thể tồn tại. Trong thực tế, nếu bạn sử dụng thuật toán băm mạnh, như SHA-256, bạn có thể bỏ qua nguy cơ va chạm cho một trang web ngay cả với hàng triệu người dùng đã đăng ký. Mọi thứ sẽ khác nếu bạn sử dụng thuật toán băm lỗi thời và mất giá, như MD5.