1. Hãy hiểu rằng CORS là một biện pháp tình thế nhằm vá lỗi thiết kế của trình duyệt.
- CORS (chia sẻ tài nguyên khác nguồn gốc) giải quyết các vấn đề bảo mật do thông tin xác thực ngầm định trong các yêu cầu khác nguồn gốc gây ra.
- Hành vi mặc định của trình duyệt khiến người dùng có nguy cơ bị phơi nhiễm trước các cuộc tấn công XSRF.
- CORS cố gắng giảm nhẹ các vấn đề này, nhưng có những giới hạn mang tính căn bản trong phạm vi bảo mật.
2. CORS ngăn việc đọc kết quả của các yêu cầu khác nguồn gốc, nhưng không chặn chính yêu cầu đó.
fun-games.example không thể đọc dữ liệu của your-bank.example, nhưng vẫn có thể thực hiện các yêu cầu thay đổi trạng thái như chuyển tiền.
- Điều này là do cách trình duyệt xử lý cookie và thông tin xác thực theo mặc định.
3. Bảo mật khác nguồn gốc hiệu quả bắt đầu từ việc bỏ qua thông tin xác thực ngầm định.
- Loại bỏ hoặc chỉ cho phép một cách tường minh cookie và các thông tin xác thực tương tự trong các yêu cầu khác nguồn gốc.
- Tận dụng các header
Sec-Fetch-* để lọc cookie khác nguồn gốc hoặc dùng middleware để loại bỏ chúng.
4. Thông tin xác thực tường minh là lựa chọn an toàn hơn so với thông tin xác thực ngầm định.
- Dùng header
Authorization cho token xác thực thay vì cookie.
- Thông tin xác thực tường minh ngăn việc lạm dụng thông tin xác thực giữa các trang khác nhau.
- Cách này không phù hợp với các trang render phía server, nhưng là phương án tối ưu cho API và ứng dụng phía client.
5. Hãy triển khai cookie SameSite để hạn chế việc dùng thông tin xác thực khác nguồn gốc.
- Dùng
SameSite=Lax để cookie không được đính kèm trong các yêu cầu khác nguồn gốc theo mặc định.
- Chọn
SameSite=Strict cho chính sách nghiêm ngặt hơn. Tuy nhiên, điều này có thể ảnh hưởng đến khả năng sử dụng (ví dụ: bị đăng xuất sau khi điều hướng từ nguồn gốc khác).
6. Hãy áp dụng chính sách CORS đơn giản và an toàn.
- Chính sách mặc định:
Access-Control-Allow-Origin: * và Access-Control-Allow-Methods: * chỉ cho phép truy cập ẩn danh.
- Chính sách này vô hiệu hóa thông tin xác thực ngầm định trong các yêu cầu khác nguồn gốc, qua đó bảo vệ trang khỏi việc lạm dụng thông tin xác thực ngoài ý muốn.
7. Đừng làm chính sách CORS trở nên quá phức tạp vì lý do bảo mật.
- Việc cấu hình quá chi tiết có thể tạo ra cảm giác an toàn sai lầm.
- CORS proxy và các cách lách khác có thể vượt qua chính sách do trình duyệt cưỡng chế, khiến các nỗ lực hạn chế truy cập trở nên vô hiệu.
8. Hãy hiểu xu hướng rộng hơn đang hướng tới các giá trị mặc định an toàn hơn cho web.
- Các trình duyệt đang thử nghiệm những cách như State Partitioning (Firefox), Tracking Prevention (Safari) và CHIPS (Chrome) để giải quyết vấn đề thông tin xác thực khác nguồn gốc.
- Các sáng kiến này tìm cách cải thiện bảo mật và quyền riêng tư của người dùng bằng cách hạn chế việc chia sẻ cookie và thông tin xác thực giữa các nguồn gốc.
9. Hãy nhận ra rằng CORS là một giải pháp chưa hoàn thiện.
- Tính tương thích ngược của CORS làm tăng độ phức tạp nhưng vẫn không thể giải quyết triệt để vấn đề bảo mật cốt lõi.
- Các trình duyệt đang chậm rãi áp dụng các cách tiếp cận mới để giảm nhẹ những vấn đề này, nhưng tiến độ vẫn thiếu nhất quán.
Chưa có bình luận nào.