Series Authentication: Phần 1: Basic Authentication - Cái Đơn Giản Nhưng Hiệu Quả
1. Basic Authentication Là Gì?
Basic Authentication, hay còn gọi là "Basic Auth", giống như chìa khóa mở cửa của một căn nhà (mặc dù nó chỉ là cái chìa khóa tạm bợ). Nó yêu cầu người dùng nhập vào username và password, sau đó thông tin này sẽ được mã hóa bằng Base64 trước khi được gửi đến server.
Chú ý: Mã hóa bằng Base64 không thực sự bảo mật lắm đâu! Bạn có thể tưởng tượng Base64 giống như viết password của bạn lên một tờ giấy, gấp lại, rồi đưa cho ai đó. Họ chỉ cần mở giấy ra là thấy rõ ngay, nên nếu không có lớp bảo mật như HTTPS thì đừng mong an toàn!
2. Cách Hoạt Động
Quá trình này diễn ra như sau:
- Người dùng nhập username và password.
- Trình duyệt mã hóa username và password bằng Base64 (thật ra không mạnh lắm, đừng quá tin tưởng vào nó).
- Thông tin này được gửi đi trong header của request HTTP.
- Server kiểm tra thông tin đăng nhập: Nếu đúng thì cho vào, nếu sai thì "quay xe" về lại màn hình đăng nhập thôi!
Bạn có thể hình dung Basic Auth như một người bảo vệ ở cửa, mỗi lần ai đó vào nhà, bạn đưa thẻ nhân viên (chính là username và password), bảo vệ nhìn qua thẻ, thấy đúng thì cho vào. Nhưng nếu bạn đi ra ngoài mua trà sữa mà quên khóa cửa (sử dụng HTTP thay vì HTTPS), thì có thể kẻ trộm sẽ tiện đường "mượn" luôn thông tin của bạn và quay lại vào nhà sau khi bạn đi mất!
3. Lợi Ích Của Basic Authentication
Mặc dù Basic Auth có vẻ "thô sơ", nhưng vẫn có những ưu điểm nhất định, nhất là khi sử dụng đúng cách:
- Dễ cài đặt: Chỉ cần vài dòng mã là xong, không cần phức tạp hóa vấn đề.
- Không cần duy trì phiên (session): Không phải lo lắng về việc lưu trữ thông tin phiên hay xử lý cookie, làm cuộc sống đơn giản hơn.
- Hữu dụng cho API đơn giản: Trong các API đơn giản, không có yêu cầu bảo mật cao, Basic Auth là một lựa chọn nhanh chóng và tiện lợi.
4. Hạn Chế Của Basic Authentication
Tuy nhiên, với sức mạnh to lớn đi kèm trách nhiệm nặng nề – Basic Auth có rất nhiều điểm yếu:
- Không bảo mật khi dùng HTTP: Khi sử dụng qua HTTP (không mã hóa), thông tin đăng nhập của bạn có thể bị “nghe lén” bởi bất kỳ ai. Ví dụ, một kẻ xấu có thể đứng ở quán cà phê và bắt chước mọi yêu cầu của bạn.
- Không hỗ trợ logout: Không có khái niệm "phiên" trong Basic Auth, nên bạn không thể đăng xuất theo cách thông thường (trừ khi bạn đóng hẳn trình duyệt).
- Yếu với hệ thống lớn: Trong các ứng dụng phức tạp hoặc có nhiều người dùng, Basic Auth khó có thể đảm bảo bảo mật tốt được.
Basic Auth giống như một lớp học mà mọi người đều biết mật khẩu của lớp là "123456". Bạn có thể sử dụng mật khẩu đó để vào lớp mỗi ngày, nhưng nếu ai đó biết được và phá cửa vào lớp thì cả lớp sẽ bị "tổn thương tinh thần" nặng nề!
5. Triển Khai Basic Authentication
Hãy cùng xem qua một ví dụ về cách triển khai Basic Auth trong một ứng dụng web đơn giản. Dưới đây là cách sử dụng Basic Auth trong một ứng dụng Express.js:
Bài viết cùng chuyên mục
Hướng dẫn cài và sử dụng vue-object-to-formdata cho dự án nuxtjs
Hướng dẫn cài đặt và sử dụng v-tooltip trong project nuxt js
Hướng dẫn cài đặt và sử dụng thư viện Elementjs nuxtjs
Việc làm tại Hatonet
- GWS
- Trưởng phòng IT