2011-10-20 26 views
5

Bất cứ ai có thể giải thích cách hoạt động của xác thực http://user:[email protected]? Trình duyệt có gửi tiêu đề Authorization với user:pass được mã hóa base-64 không?Làm cách nào để http: // user: [email protected] xác thực?

Tôi đã mở bảng điều khiển Net trong công cụ dành cho nhà phát triển Chrome và khi tôi yêu cầu như http://user:[email protected] Tôi không thấy tiêu đề Authorization được thêm vào.

Tôi thực sự tò mò về cách trình duyệt gửi mật khẩu trong trường hợp tôi sử dụng user:[email protected] ở phía trước URL.

+3

Nó chỉ là tiêu đề ủy quyền. Tôi không biết Chrome hoạt động như thế nào, nhưng với Firefox nó sẽ kiểm tra xem trang web có yêu cầu xác thực (trong yêu cầu) và nếu không, hãy cảnh báo bạn rằng "Bạn sắp đăng nhập vào trang" stackoverflow. com "với tên người dùng" người dùng ", nhưng trang web không yêu cầu xác thực. Đây có thể là một nỗ lực để lừa bạn. Có phải "stackoverflow.com" trang web bạn muốn truy cập không? 'Và sau đó, [Có] cắt bỏ chi tiết xác thực hoặc [Không] hủy yêu cầu. Vì vậy, trừ khi bạn đã có một trang web với ủy quyền tiện dụng, bạn * sẽ không * xem tiêu đề. –

Trả lời

3

Để kiểm tra tiêu đề, bạn cần kiểm tra đối với máy chủ yêu cầu xác thực. Khách hàng sẽ không gửi bất kỳ tiêu đề Authorization nào cho đến khi máy chủ yêu cầu vì máy khách sẽ không biết phương thức xác thực mà máy chủ yêu cầu (cơ bản hoặc thông báo).


xác thực HTTP được thực hiện trong hai yêu cầu:

Đầu tiên, một yêu cầu mà không cần bất kỳ Authorization tiêu đề được gửi đi. Máy chủ sau đó sẽ phản hồi bằng số WWW-Authenticate thông báo cho khách hàng cách xác thực. Điều này bao gồm tên miền và phương thức xác thực (một lần nữa, đây là cơ bản hoặc thông báo)

Sau đó, khách hàng sẽ gửi yêu cầu mới với tiêu đề bổ sung Authorization. Trong trường hợp của basic authentication, tiêu đề này chỉ là user:pass mã hóa base64, cũng giống như bạn đang nói:

Authorization: Basic dXNlcjpwYXNz 

Bây giờ mật khẩu là có thể nhìn thấy trên đường vận chuyển, trừ khi bạn đang sử dụng https. Một lựa chọn tốt hơn là digest authentication, trong đó nội dung của cả hai số WWW-AuthenticateAuthorization được giải thích rõ nhất theo số wikipedia article. :)