Hiểu các quy tắc bảo mật của Firebase cho bộ nhớ đám mây

Theo truyền thống, bảo mật là một trong những phần phức tạp nhất trong quá trình phát triển ứng dụng. Trong hầu hết các ứng dụng, nhà phát triển phải xây dựng và chạy một máy chủ xử lý việc xác thực (người dùng là ai) và ủy quyền (người dùng có thể làm gì). Việc xác thực và ủy quyền khó thiết lập, khó thực hiện đúng hơn và rất quan trọng đối với sự thành công của sản phẩm của bạn.

Tương tự như cách Xác thực Firebase giúp bạn dễ dàng xác thực người dùng của mình, Quy tắc bảo mật Firebase cho Lưu trữ đám mây giúp bạn dễ dàng ủy quyền cho người dùng và xác thực các yêu cầu. Quy tắc bảo mật lưu trữ đám mây quản lý độ phức tạp cho bạn bằng cách cho phép bạn chỉ định các quyền dựa trên đường dẫn. Chỉ bằng một vài dòng mã, bạn có thể viết các quy tắc ủy quyền hạn chế các yêu cầu Cloud Storage đối với một người dùng nhất định hoặc giới hạn kích thước tải lên.

Cơ sở dữ liệu thời gian thực Firebase có một tính năng tương tự, được gọi là Quy tắc bảo mật cơ sở dữ liệu thời gian thực Firebase

Xác thực

Biết người dùng của bạn là ai là một phần quan trọng trong việc xây dựng một ứng dụng và Xác thực Firebase cung cấp giải pháp xác thực chỉ dành cho phía khách hàng, dễ sử dụng, an toàn. Quy tắc bảo mật Firebase dành cho Lưu trữ đám mây liên kết với Xác thực Firebase để bảo mật dựa trên người dùng. Khi người dùng được xác thực bằng Xác thực Firebase, biến request.auth trong Quy tắc bảo mật lưu trữ đám mây sẽ trở thành một đối tượng chứa ID duy nhất của người dùng ( request.auth.uid ) và tất cả thông tin người dùng khác trong mã thông báo ( request.auth.token ) . Khi người dùng chưa được xác thực, request.authnull . Điều này cho phép bạn kiểm soát an toàn quyền truy cập dữ liệu trên cơ sở từng người dùng. Bạn có thể tìm hiểu thêm trong phần Xác thực .

Ủy quyền

Việc xác định người dùng của bạn chỉ là một phần của bảo mật. Sau khi biết họ là ai, bạn cần có cách để kiểm soát quyền truy cập của họ vào các tệp trong Cloud Storage.

Cloud Storage cho phép bạn chỉ định các quy tắc ủy quyền cho mỗi tệp và mỗi đường dẫn tồn tại trên máy chủ của chúng tôi và xác định quyền truy cập vào các tệp trong ứng dụng của bạn. Ví dụ: Quy tắc bảo mật lưu trữ đám mây mặc định yêu cầu Xác thực Firebase để thực hiện mọi thao tác read hoặc write trên tất cả các tệp:

service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write: if request.auth != null;
    }
  }
}

Bạn có thể chỉnh sửa các quy tắc này bằng cách chọn ứng dụng Firebase trong bảng điều khiển Firebase và xem tab Rules của phần Bộ nhớ.

Xác nhận dữ liệu

Quy tắc bảo mật Firebase cho Cloud Storage cũng có thể được sử dụng để xác thực dữ liệu, bao gồm xác thực tên và đường dẫn tệp cũng như các thuộc tính siêu dữ liệu tệp như contentTypesize .

service firebase.storage {
  match /b/{bucket}/o {
    match /images/{imageId} {
      // Only allow uploads of any image file that's less than 5MB
      allow write: if request.resource.size < 5 * 1024 * 1024
                   && request.resource.contentType.matches('image/.*');
    }
  }
}

Bước tiếp theo