Ngày nay, việc phát triển phần mềm ngày càng trở nên phức tạp và có nhiều mối đe dọa về bảo mật thông tin. Bắt kịp xu hướng đó, cơ chế Authentication và Authorization đã ra đời để giải quyết vấn đề này, giúp nâng cao tính bảo mật của phần mềm.
1. Authentication là gì? Một số phương pháp Authentication phổ biến
1.1. Khái niệm
Authentication là quá trình xác thực thông tin của người dùng và mật khẩu để xác minh danh tính, đồng thời xác thực người dùng có quyền truy cập các dữ liệu nào đó hay không.
1.2. Phân loại
Authentication gồm có 2 loại là: HTTP Basic Authentication và Multi – factor Authentication.
– HTTP Basic Authentication
HTTP Basic Authentication là một hình thức xác thực nhằm nâng cao tính bảo mật cho ứng dụng trên giao thức HTTP. Hình thức này yêu cầu người dùng cung cấp tên đăng nhập và mật khẩu khi sử dụng phần mềm. Server sẽ thu thập thông tin của người dùng trên trình duyệt để bảo mật dữ liệu.
– Multi – factor Authentication (MFA)
Multi – factor Authentication là hình thức xác thực đa yếu tố, là hệ thống bảo mật yêu cầu nhiều bước xác thực bao gồm đăng nhập hoặc sử dụng các hình thức giao dịch khác.
Multi – factor Authentication thường kết hợp các yếu tố như password, security token và biometric verification.
Việc kết hợp nhiều yếu tố sẽ tạo nên một lớp bảo mật vững chắc cho ứng dụng, ngăn chặn tình trạng xâm phạm từ hacker.
1.3. Một số phương pháp Authentication phổ biến
– Password
Password là phương pháp Authentication đơn giản, dễ triển khai nhất. Người dùng sẽ được yêu cầu nhập mật khẩu, sau đó hệ thống sẽ lưu lại thông tin ở dạng mã hóa một chiều, đảm bảo mật khẩu dù có bị hack cũng không thể khôi phục được.
– Khóa điện tử công khai
Public – Key cryptography là phương pháp xác thực thông qua thuật toán mã hóa bằng khóa công cộng và khóa cá nhân. Để truy cập vào tài nguyên của hệ thống thì cần có một khóa cá nhân trên máy và đăng nhập vào ứng dụng mà không cần nhớ thông tin đăng nhập.
– Sinh học
Biometrics là phương pháp xác thực thông qua vân tay, khuôn mặt, và các yếu tố sinh học khác của con người. Phương pháp này thường kết hợp với ID và mật khẩu phòng trường hợp người dùng quên.
2. Cơ chế lưu trữ đăng nhập người dùng
Có 3 cơ chế lưu trữ đăng nhập người dùng cơ bản là Basic Authentication, Session-based Authentication và Token-based Authentication.
2.1. Basic Authentication
Basic Authentication là cơ chế xác thực đơn giản nhất của ứng dụng web và được nhiều máy chủ tích hợp tự động một cách dễ dàng.
Ưu điểm:
- Đơn giản, tương thích với hầu hết các trình duyệt, server
- Dễ dàng kết hợp với các phương pháp khác như phương pháp sử dụng cookie, session, token.
Nhược điểm:
- Dễ lộ thông tin về password, tên đăng nhập do mỗi yêu cầu đều phải truyền username và password.
- Bắt buộc phải lưu thông tin đăng nhập trên trình duyệt một cách tự động, do đó người dùng không thể logout.
- Giao diện không thân thiện với người dùng, khiến cho trải nghiệm người dùng vô cùng nhàm chán.
2.2. Session-based Authentication
Session-based Authentication là cơ chế xác minh danh tính dựa trên session của người dùng server. Sau khi xác thực thành công, server sẽ lưu password và username của người dùng.
Đối với server, nơi lưu trữ là database, file; đối với client, nơi lưu trữ là bộ nhớ cookie, URL website.
Ưu điểm:
– Thông tin được giữ kín:
Client chỉ biết tới session ID mà không biết tới bất kỳ thông tin gì của người dùng trong quá trình truyền tải.
– Dung lượng truyền thông tin nhỏ:
Session ID không mang thông tin người dùng mà chỉ là chuỗi ký tự đặc biệt khoảng 20-50 ký tự, do đó, mỗi yêu cầu có dung lượng nhỏ và truyền tải dễ dàng hơn.
– Không ảnh hưởng tới Client:
Sử dụng cơ chế lưu trữ người dùng Session-based Authentication chỉ yêu cầu bạn sửa thông tin phía server. Trình duyệt hầu như không xử lý thêm thông tin gì mà phản hồi tự động.
Nhược điểm:
– Chiếm nhiều dung lượng của bộ nhớ:
Ở mỗi yêu cầu làm việc của user, máy khách lại tạo ra một session mới và lưu vào bộ nhớ. Số lượng session ngày càng nhiều sẽ khiến cho bộ nhớ của ứng dụng quá tải.
– Khó khăn trong việc tính toán dữ liệu:
Vì dữ liệu của session được lưu trữ tại server nên bạn sẽ gặp khó khăn trong việc tính toán dữ liệu ứng dụng.
– Phụ thuộc vào domain:
Một số trường hợp xác minh thông qua cookie mà cookie lại phụ thuộc vào domain, do đó, đăng nhập của người dùng sẽ phụ thuộc vào domain.
– Dễ bị tấn công:
Các Session ID thường được lưu vào cookie, trong khi đó cookie dễ bị tấn công bởi hacker, dẫn đến việc ứng dụng cũng dễ bị tấn công hơn.
2.3. Token-based Authentication
Token-based Authentication là cơ chế xác minh danh tính dựa vào việc tạo ra một chuỗi ký tự mang thông tin người dùng do máy chủ tạo ra và được lưu ở máy khách.
Ưu điểm:
– Stateless:
Token có khả năng tự lưu trữ, do vậy máy chủ không cần lưu bất cứ thông tin gì. Điều này giúp tính toán ứng dụng theo chiều ngang (horizontal scalability) mà không cần biết nguồn gốc của token.
– Phù hợp với nhiều loại máy khách:
Tokens có thể dễ dàng lưu trữ và truyền tải trên nhiều loại máy khách, bao gồm trình duyệt web, ứng dụng di động, và thiết bị IoT.
– Không bị giới hạn bởi domain:
Sử dụng Token giúp bên thứ 3 hoạt động dễ dàng hơn và không phụ thuộc vào domain như cơ chế sử dụng cookie.
Nhược điểm:
– Khó quản lý đăng xuất:
Do server không lưu thông tin gì về token hay session của user dẫn đến tình trạng khó kiểm soát việc đăng xuất.
– Thông tin dễ lộ:
Thông tin về phiên đăng nhập của người dùng có trên token và lưu ở phía client nên sẽ có nguy cơ lộ thông tin trong quá trình truyền tải.
3. Authorization là gì? Một số phương pháp Authorization
3.1. Khái niệm
Authorization là quá trình xác định quyền truy cập vào các dữ liệu trong ứng dụng cho người dùng. Quá trình authorization diễn ra sau quá trình xác định danh tính nhằm xác định mức độ quyền sử dụng các tệp, cơ sở dữ liệu, ứng dụng con hoặc tài nguyên khác.
Mục đích của Authorization là cho phép người dùng được thực hiện các quyền đã cấp phép, truy cập vào các tài nguyên có khóa bảo vệ, ngăn chặn các cuộc tấn công từ người dùng trái phép.
3.2. Một số phương pháp Authorization:
– Khóa API
Khóa API là một hình thức ủy quyền, thường liên kết với một ứng dụng cụ thể, để xác định người đang sử dụng khóa API. API gồm khóa chung và khóa riêng, hỗ trợ liên lạc giữa máy chủ và người dùng.
– Xác thực cơ bản
Xác thực cơ bản là hình thức ủy quyền mà người dùng nhập tên đăng nhập, mật khẩu vào tiêu đề thông qua HTTPS. Triển khai xác thực HTTP cơ bản là phương pháp đơn giản nhất để kiểm soát quyền truy cập vào tài nguyên ứng dụng.
– HMAC
HMAC là quá trình ủy quyền dựa trên mã xác thực tin nhắn thông qua thuật toán chữ ký số. HMAC đảm bảo chỉ người gửi và người nhận mới có quyền truy cập khóa bảo mật để sử dụng tài nguyên trong ứng dụng.
– OAuth
OAuth là dạng Authorization cho phép người dùng Internet truy cập thông tin ứng dụng mà không cần cung cấp mật khẩu.
OAuth là hình thức nhiều tập đoàn lớn như Amazon, Google, Facebook, Microsoft áp dụng, giúp người dùng trao đổi thông tin về tài khoản của họ với các ứng dụng thứ ba.
4. Phân biệt Authentication và Authorization
Authentication và Authorization là hai thuật ngữ rất dễ nhầm lẫn. Tuy nhiên, chúng là hai khái niệm hoàn toàn khác nhau với một vài điểm khác biệt như:
Authentication | Authorization |
Authentication là bước đầu tiên của Authorization. | Authorization là bước sau khi Authentication thành công. |
Authentication giúp xác định danh tính để cấp quyền đăng nhập vào ứng dụng. | Authorization giúp xác định quyền truy cập vào tài nguyên có trong ứng dụng. |
Thường yêu cầu cung cấp tên đăng nhập và mật khẩu | Tùy vào tính bảo mật mà sẽ yêu cầu các yếu tố xác thực khác nhau |
Xác thực được hiển thị và người dùng có thể thay đổi một phần | Việc ủy quyền không được hiển thị và không thể thay đổi |
Kết luận
Authentication và Authorization là hai khía cạnh quan trọng trong bảo mật phần mềm. Authentication xác minh danh tính người dùng, trong khi Authorization kiểm soát quyền truy cập. Sự kết hợp linh hoạt giữa hai yếu tố này giúp doanh nghiệp đảm bảo tính toàn vẹn và an toàn cho hệ thống, tạo nên một môi trường phát triển phần mềm đáng tin cậy.
Hiện nay, BAP Software là một trong những công ty dịch vụ công nghệ thông tin uy tín, cung cấp các sản phẩm công nghệ chất lượng cao tới người dùng, đặc biệt là các dịch vụ về phần mềm. Nếu bạn có nhu cầu cần hỗ trợ và tư vấn, hãy liên hệ ngay với BAP Software! Chúng tôi luôn sẵn sàng hỗ trợ 24/24.