0
0
Lập trình
Admin Team
Admin Teamtechmely

Kiểm Soát Truy Cập trong Ứng Dụng Web: Backend và Frontend

Đăng vào 1 tháng trước

• 6 phút đọc

Tóm Tắt Nhanh

Bài viết này giới thiệu và khám phá các loại giải pháp Kiểm Soát Truy Cập cho một ứng dụng web, bao gồm chiến lược backend và xử lý frontend.

Đây không phải là một bài hướng dẫn cụ thể. Chúng tôi sẽ chỉ đề cập đến các tùy chọn và giải pháp có sẵn cũng như một số thực tiễn tốt nhất. Bạn có thể sử dụng AI để hỗ trợ việc triển khai một giải pháp cụ thể.

Kiểm Soát Truy Cập là gì?

Tóm lại, Kiểm Soát Truy Cập là một quy trình hoặc khuôn khổ an ninh cho ứng dụng của bạn, cho phép bạn kiểm soát việc truy cập và hoạt động trên các tài nguyên bởi người dùng.

Có nhiều tài nguyên chi tiết khác về những điều cơ bản của Kiểm Soát Truy Cập. Ví dụ, OSO (nhà cung cấp giải pháp kiểm soát truy cập) cung cấp một số tài nguyên kiến thức hữu ích mà bạn có thể tìm thấy tại đây. Ngoài ra còn nhiều blog và video trên YouTube khác có sẵn.

Lịch Sử Kiểm Soát Truy Cập trong Phần Mềm

Lịch sử của các hệ thống Kiểm Soát Truy Cập bắt nguồn từ những năm 60 và 70, khi nó chủ yếu được phát triển và sử dụng bởi các nhà phát triển hệ điều hành để quản lý truy cập vào dữ liệu/tệp. Với DAC được sử dụng trong UNIX và Windows.

Sau đó xuất hiện Mandatory Access Control (MAC), ban đầu được sử dụng bởi Quân đội và Chính phủ Hoa Kỳ. Nó sau đó trở nên phổ biến hơn và được áp dụng để tạo ra các công cụ và ứng dụng bảo mật trong Linux, MacOS và Windows.

Role-Based Access Control (RBAC), một cái tên quen thuộc hơn, xuất hiện vào đầu những năm 90. RBAC vẫn tồn tại và là loại hệ thống kiểm soát truy cập cơ bản/chuẩn nhất. Trong RBAC, chúng ta có các vai trò đã được định nghĩa trước có thể được gán cho người dùng và các quyền truy cập được gán cho các vai trò này. Tìm hiểu thêm về lịch sử của RBAC tại đây.

Các Loại Kiểm Soát Truy Cập

Lưu ý rằng đây chỉ là các phương pháp, không phải là ngôn ngữ lập trình hay tính năng. Điều này có nghĩa là nếu ai đó tạo ra một biến thể mới của kiểm soát truy cập và đặt tên cho nó, nó sẽ trở thành một loại mới.

Trong ngữ cảnh của Ứng Dụng Web, đây là các loại mô hình kiểm soát truy cập chính:

  1. RBAC - Kiểm Soát Truy Cập Dựa Trên Vai Trò

  2. ABAC - Kiểm Soát Truy Cập Dựa Trên Thuộc Tính

  3. PBAC - Kiểm Soát Truy Cập Dựa Trên Chính Sách

Để dễ dàng hơn, tôi chỉ liệt kê các loại phổ biến và thường được sử dụng. Một trong số này, hoặc một sự kết hợp, có thể phù hợp với nhu cầu của bạn.

Thực Tiễn Tốt Nhất và Mô Hình

Dưới đây là một số thực tiễn tốt nhất, tiêu chuẩn và mô hình để đảm bảo hệ thống kiểm soát truy cập được triển khai đúng cách:

  1. Lớp ủy quyền tập trung - logic liên quan đến truy cập không nên bị phân tán trong mã nguồn mà nên được duy trì trong một lớp ủy quyền riêng biệt.

  2. Nguyên tắc tối thiểu - người dùng chỉ nên có quyền hạn tối thiểu cần thiết.

  3. Từ chối theo mặc định - không có quyền truy cập trừ khi được cấp phép rõ ràng.

  4. Thực thi phía máy chủ - không bao giờ dựa vào mã phía client (JS, HTML) để bảo vệ tài nguyên.

  5. Nhật ký truy cập - theo dõi và xem xét các sự kiện truy cập để phát hiện bất thường.

  6. Tách biệt nhiệm vụ - ngăn chặn các vai trò đơn lẻ có quyền hạn kết hợp quá mức.

  7. Chính sách như mã - quản lý logic ủy quyền một cách khai báo, có phiên bản và có thể kiểm tra.

  8. Token / phiên ngắn hạn - giảm thiểu cơ hội lạm dụng.

  9. Tính nhất quán - đảm bảo frontend phản ánh các quy tắc ủy quyền của backend.

Xử Lý Quyền Truy Cập trong Frontend

Hầu hết công việc nặng nhọc liên quan đến kiểm soát truy cập là liên quan và khả thi chỉ ở backend, nhưng khi đến frontend, chúng ta phải đảm bảo rằng ứng dụng được cập nhật để:

  1. Duy trì trải nghiệm người dùng tốt.

  2. Tránh tiếp xúc và cố gắng truy cập không cần thiết - chỉ hiển thị các tùy chọn phù hợp cho từng người dùng.

  3. Đảm bảo quyền truy cập vào bất kỳ thông tin tĩnh nào được quản lý tương ứng.

Những điều thiết yếu cần xử lý trong frontend là gì?

  1. Hiển thị/ẩn các tùy chọn cho người dùng dựa trên vai trò và quyền hạn của họ.

  2. Nhận và lưu trữ vai trò và quyền hạn từ backend.

  3. Xử lý quyền hạn trong mã.

Dưới đây là một số câu hỏi mà chúng ta có thể hỏi để tìm ra giải pháp frontend tối ưu:

  1. Làm thế nào chúng ta có thể nhận chi tiết vai trò và quyền hạn từ backend?

    1. Có phải có một API cấu hình để thêm các chi tiết này không? Hay chúng ta có thể bao gồm nó trong API xác thực?
    2. Có cần một API riêng cho vai trò và quyền hạn không?
    3. Chúng ta có thể lưu cache phản hồi từ API này không?
    4. Làm thế nào chúng ta đảm bảo rằng chúng ta có thông tin mới nhất mỗi khi backend được cập nhật?
  2. Làm thế nào chúng ta xử lý quyền hạn trong mã UI?

    1. Cách tốt nhất để tách logic truy cập khỏi UI là gì? (Dựa trên framework frontend)
    2. Làm thế nào chúng ta có thể đảm bảo rằng nó có thể mở rộng? (trong khi thực hiện ít thay đổi hoặc không thay đổi mã UI)
  3. Nợ kỹ thuật là gì?

    1. Giải pháp này có cần tích hợp sâu không?
    2. Nó có phụ thuộc vào một cấu trúc backend cụ thể không?

Sau khi thực hiện các câu hỏi này, bạn sẽ có ý tưởng rõ ràng hơn về những gì và cách triển khai kiểm soát truy cập trong frontend để phản ánh các quy tắc và quyền hạn của backend. Để giữ mọi thứ đơn giản, đây là một giải pháp tiêu chuẩn, có thể mở rộng và chất lượng cao - CASL, giải quyết tất cả những điều mà chúng ta đã thảo luận và nhiều hơn nữa.

💡
Mẹo chuyên nghiệp: Giống như việc bạn không nên tự viết quản lý trạng thái trong React với suy nghĩ rằng React Context = Redux, bạn cũng không nên tự viết một giải pháp kiểm soát truy cập từ đầu trừ khi bạn thực sự biết mình đang làm gì và hiểu mọi thứ về nó.

Kết Luận

Giải pháp kiểm soát truy cập tối ưu cho ứng dụng của bạn sẽ phụ thuộc vào yêu cầu và các điều kiện khác, có thể là một mô hình cơ bản hoặc một sự kết hợp của các mô hình khác nhau. Bài viết này tập trung vào những điều cơ bản của kiểm soát truy cập và khám phá các khả năng, cũng như một số nguyên tắc quan trọng và thực tiễn tốt nhất.

Liên Kết tới Tài Nguyên Kiến Thức

  1. OSO Academy

  2. NIST về RBAC

  3. Hướng dẫn toàn diện về các mô hình kiểm soát truy cập

  4. Nguyên tắc tối thiểu

  5. CyberArk về quyền tối thiểu

  6. Các thực tiễn tốt nhất về ủy quyền

  7. F5 về bảo mật ứng dụng web

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào