Xác thực thông báo khác với Xác thực cơ bản như thế nào ngoài việc gửi thông tin xác thực dưới dạng văn bản thuần túy?
Xác thực thông báo khác với Xác thực cơ bản như thế nào ngoài việc gửi thông tin xác thực dưới dạng văn bản thuần túy?
Câu trả lời:
Sự khác biệt chính là nó không yêu cầu gửi tên người dùng và mật khẩu qua dây ở dạng bản rõ. Nó cũng miễn nhiễm với các cuộc tấn công phát lại, vì nó sử dụng số một lần từ máy chủ.
Máy chủ cung cấp cho máy khách một số sử dụng một lần (số không) mà nó kết hợp với tên người dùng, lĩnh vực, mật khẩu và yêu cầu URI. Máy khách chạy tất cả các trường đó thông qua một phương pháp băm MD5 để tạo ra một khóa băm.
Nó gửi khóa băm này đến máy chủ cùng với tên người dùng và lĩnh vực để cố gắng xác thực.
Phía máy chủ, phương pháp tương tự được sử dụng để tạo mã băm, chỉ thay vì sử dụng mật khẩu được nhập vào trình duyệt, máy chủ sẽ tra cứu mật khẩu mong đợi cho người dùng từ DB người dùng của nó. Nó tra cứu mật khẩu được lưu trữ cho tên người dùng này, chạy qua cùng một thuật toán và so sánh nó với những gì khách hàng đã gửi. Nếu chúng khớp thì quyền truy cập được cấp, nếu không nó có thể gửi lại 401 Không được phép (không đăng nhập hoặc đăng nhập không thành công) hoặc 403 Bị cấm (truy cập bị từ chối).
Xác thực thông số được chuẩn hóa trong RFC2617 . Có một cái nhìn tổng quan về nó trên Wikipedia :
Bạn có thể nghĩ về nó như thế này:
Một băm của thông tin xác thực được gửi qua dây.
HA1 = MD5(username:realm:password)
Cách duy nhất để lấy mã băm HA1 của thông tin đăng nhập là biết mật khẩu. Máy chủ biết HA1 nhưng không biết mật khẩu đã tạo ra nó. Nếu kẻ tấn công biết HA1, nó có thể xâm nhập vào hệ thống. Vì vậy, nó không được gửi xuống dây. Một băm khác dựa trên nonce, v.v. được thực hiện trước khi thực hiện việc này và điều này phải đồng ý với một phép tính tương tự được thực hiện trên máy chủ. Do đó, miễn là máy chủ giữ HA1 ở chế độ riêng tư thì hệ thống vẫn an toàn.