it-swarm-vi.com

Di chuyển tài khoản người dùng ra khỏi hệ thống bằng mật khẩu băm

Tôi có một hệ thống với vài nghìn tài khoản người dùng mà tôi cần chuyển sang nền tảng mới. Hệ thống lưu trữ mật khẩu băm, không được mã hóa hoặc (cảm ơn lòng tốt) văn bản đơn giản. Ngoài ra, tôi không có sẵn các chi tiết về băm.

Một số cách hiệu quả để thực hiện quá trình chuyển đổi là gì? Một ý tưởng nảy ra trong đầu tôi:

  1. Trước thời gian, tôi có thể di chuyển tất cả dữ liệu. Người dùng hiện tại trong nền tảng cũ sẽ có một tài khoản và tất cả dữ liệu của họ trong nền tảng mới.
  2. Trích xuất một số mã hiện đang xử lý xác thực và biến nó thành một loại dịch vụ sẽ kiểm tra tính hợp lệ của tên người dùng/mật khẩu.
  3. Nền tảng mới trước tiên có thể kiểm tra xác thực của chính nó để xem liệu mật khẩu đã được chuyển chưa. Nếu không, nó có thể gọi dịch vụ trên nền tảng khác để xác định xem nó có hợp lệ trong hệ thống cũ hay không.
  4. Nếu nó không hợp lệ, thì nó báo cho người dùng đăng nhập của họ là sai.
  5. Nếu nó hợp lệ, bây giờ nó biết mật khẩu chính xác và có thể điền vào bảng người dùng của chính nó bằng mật khẩu (theo bất kỳ lược đồ nào mà nền tảng sử dụng).
3
Larsenal

Tôi đã trải qua một vấn đề tương tự gần đây ngoại trừ tôi không có quyền truy cập vào thuật toán băm đang được sử dụng. Tôi nghĩ bạn có 2 sự lựa chọn.

  1. Di chuyển tất cả các hồ sơ người dùng sang hệ thống mới và có thêm một cột với hàm băm mật khẩu cũ của họ.
  2. Khi người dùng đăng nhập lần đầu tiên, hệ thống của bạn sẽ thấy không có tài khoản nào tồn tại trong hệ thống mới mà là một hàm băm tồn tại từ hệ thống cũ. Hệ thống của bạn sẽ giữ một bản sao băm mật khẩu trước và kiểm tra phiên bản băm so với băm cũ.
  3. Nếu băm cũ khớp, đặt mật khẩu trong hệ thống mới thành những gì họ đã gửi.

Tuy nhiên, nếu bạn thấy bạn không có quyền truy cập vào thuật toán băm và bạn có mỗi địa chỉ email người dùng, bạn có một lựa chọn khác. Đây là những gì tôi đã làm thực sự:

  1. Sao chép tất cả tên người dùng, địa chỉ email và thông tin từ hệ thống cũ sang hệ thống mới. Đặt một cột cờ trong bảng biểu thị người dùng là từ hệ thống cũ.
  2. Khi người dùng đăng nhập vào hệ thống mới lần đầu tiên, hệ thống mới sẽ thấy rằng họ có tài khoản nhưng không có mật khẩu.
  3. Hệ thống của bạn đặt một thông báo trên màn hình với nội dung như "Chúng tôi đã cập nhật trang web của chúng tôi và tài khoản người dùng của bạn đã được chuyển đổi. Bạn sẽ sớm nhận được email với mật khẩu tạm thời mới (đảm bảo mật khẩu hoặc liên kết đặc biệt chỉ hoạt động trong một thời gian ngắn khoảng thời gian).
  4. Gửi cho người dùng mật khẩu tạm thời đến trang web mới của bạn để họ đăng nhập. Một khi họ đăng nhập lần đầu tiên, họ sẽ đặt lại mật khẩu của mình thành bất cứ điều gì họ thích.

Tùy chọn thứ hai làm việc khá tốt cho tôi. Tôi hầu như không có khiếu nại của người dùng và nó tương đối an toàn vì đó là quy trình thông thường để người dùng đặt lại mật khẩu đã quên.

3
Ben Hoffman

Trước khi bạn gặp quá nhiều rắc rối, bạn đã xem xét thuật toán băm có thể là gì chưa? Nếu chúng đủ lành mạnh để sử dụng mật khẩu băm, hy vọng chúng đủ lành mạnh để sử dụng thuật toán băm phổ biến (MD5, SHA1, v.v.).

Có thể đáng để thử một vài lựa chọn phổ biến để xem liệu bạn có thể thiết kế ngược lại những gì họ đang làm không.

Ngoài ra, bạn đề cập đến việc "trích xuất một số mã hiện đang xác thực". Làm thế nào mà bạn có mã, nhưng không phải là thuật toán băm?

0
Eric Petroelje