Tôi đang phát triển API web JSON/REST, mà tôi đặc biệt muốn các trang web của bên thứ ba có thể gọi dịch vụ của tôi thông qua AJAX. Do đó, dịch vụ của tôi đang gửi tiêu đề CORS nổi tiếng:Khi nào an toàn khi bật CORS?
Access-Control-Allow-Origin: *
Cho phép các trang web bên thứ ba gọi dịch vụ của tôi thông qua AJAX. Tất cả đều ổn.
Tuy nhiên, một phần của api trên web của tôi không công khai và yêu cầu xác thực (nội dung chuẩn với OAuth và cookie access_token). Có an toàn khi bật CORS trên phần này của trang web của tôi không?
Một mặt, sẽ rất tuyệt nếu các trang web của bên thứ ba có thể có các khách hàng ajax cũng tương tác với phần này của dịch vụ của tôi. Tuy nhiên, lý do là có chính sách gốc tương tự ở nơi đầu tiên, là điều này có thể là nguy hiểm. Bạn không muốn bất kỳ trang web nào mà bạn truy cập sau đó để có thể truy cập nội dung riêng tư của bạn.
Kịch bản mà tôi sợ là người dùng đăng nhập vào api trên web của tôi, trên trang web hoặc thông qua trang web mà anh tin tưởng và anh quên đăng xuất. Điều này sẽ cho phép mọi trang web khác mà anh ta sau đó có quyền truy cập vào nội dung riêng tư của mình bằng cách sử dụng phiên hiện tại không?
Vì vậy, câu hỏi của tôi:
- Có bao giờ an toàn để cho phép CORS về nội dung ngoài công lập?
- Nếu máy chủ hỗ trợ CORS đặt session_token thông qua cookie, cookie này có được lưu dưới tên miền của máy chủ CORS hoặc máy chủ trang web chính không?
Lưu ý rằng bạn chỉ có thể gửi tiêu đề CORS trên tài nguyên mà bạn muốn người khác truy cập từ các nguồn gốc khác. Và bạn cũng có thể giới hạn quyền truy cập CORS chỉ vào nguồn gốc mà bạn mong đợi sử dụng. –
Ý tưởng, tôi muốn tất cả các tài nguyên có thể truy cập được từ bất kỳ nguồn gốc nào, nếu giấy phép an ninh. Người dùng vẫn cung cấp thông tin đăng nhập hợp lệ. Tôi chỉ muốn đảm bảo rằng tôi không mở cửa cho các cuộc tấn công tập lệnh cross-site từ các trang web độc hại. – Jeroen