Làm cách nào để kích hoạt CORS trong Apache và Nginx?

Hạn chế hoặc cho phép chia sẻ tài nguyên giữa các trang web bằng tiêu đề CORS.


Tiêu đề CORS (Chia sẻ tài nguyên nguồn gốc) được hỗ trợ trên tất cả các trình duyệt hiện đại.

Tôi có thể sử dụng áo lót không? Dữ liệu hỗ trợ cho tính năng cors trên các trình duyệt chính từ caniuse.com.

Theo mặc định, trình duyệt hạn chế các yêu cầu HTTP có nguồn gốc chéo thông qua các tập lệnh. Và, CORS có thể thuận tiện để sử dụng lại các tài nguyên ứng dụng phổ biến trên các ứng dụng web khác. Sau khi được thêm chính xác, nó sẽ hướng dẫn trình duyệt tải ứng dụng từ một nguồn gốc khác.

Có sáu loại tiêu đề CORS phổ biến mà máy chủ có thể gửi. Hãy cùng khám phá chúng.

Kiểm soát truy cập-Cho phép-Xuất xứ

Cái phổ biến nhất mà nó yêu cầu trình duyệt tải tài nguyên trên nguồn gốc được phép. Nó hỗ trợ ký tự đại diện (*) và làm như vậy bất kỳ tên miền nào cũng có thể tải tài nguyên. Tuy nhiên, nó có một tùy chọn để cho phép một nguồn gốc cụ thể.

Apache

Thêm phần sau vào httpd.conf hoặc bất kỳ tệp cấu hình đang sử dụng nào khác.

Tiêu đề đặt Access-Control-Allow-Origin "*"

Khởi động lại Apache để kiểm tra. Bạn sẽ thấy chúng trong tiêu đề phản hồi.

Và, để cho phép từ một nguồn gốc cụ thể (ví dụ: https://gf.dev), bạn có thể sử dụng như sau.

Tiêu đề đặt Access-Control-Allow-Origin "https://gf.dev"

Nginx

Dưới đây là một ví dụ để cho phép xuất xứ https://geekflare.dev. Thêm phần sau vào khối máy chủ của nginx.conf hoặc tệp cấu hình đang sử dụng.

add_header Kiểm soát truy cập-Cho phép-Xuất xứ "https://geekflare.dev";

Kiểm soát truy cập-Cho phép-Phương thức

Trình duyệt có thể khởi tạo một hoặc nhiều phương thức HTTP để truy cập tài nguyên. Vd: – NHẬN, PUT, TÙY CHỌN, PUT, XÓA, POST

Apache

Chỉ cho phép NHẬN và POST.

Tiêu đề thêm Access-Control-Cho phép-Phương thức "ĐƯỢC ĐĂNG TẢI"

Nginx

Hãy nói rằng bạn cần thêm các phương thức XÓA và TÙY CHỌN, sau đó bạn có thể thêm như dưới đây.

add_header Access-Control-Allow-Phương thức "XÓA, TÙY CHỌN";

Sau khi khởi động lại, bạn sẽ thấy chúng trong các tiêu đề phản hồi.

Kiểm soát truy cập-Cho phép-Tiêu đề

Các tiêu đề sau đây trong safelist có nghĩa là bạn không cần phải thêm một tiêu đề. Nó nên hoạt động theo mặc định.

  • Loại nội dung
  • Chấp nhận
  • Nội dung ngôn ngữ
  • Ngôn ngữ chấp nhận

Tuy nhiên, nếu bạn cần thêm một tùy chỉnh, bạn có thể làm điều đó. Nó hỗ trợ một hoặc nhiều tiêu đề.

Apache

Hãy nói rằng bạn muốn cho phép các tiêu đề X-Custom-Header và X-Powered-By.

Tiêu đề luôn đặt Truy cập-Kiểm soát-Cho phép-Tiêu đề "X-Custom-Header, X-Powered-By"

Sau khi khởi động lại, bạn sẽ thấy kết quả trong các tiêu đề phản hồi.

Nginx

Một ví dụ về việc thêm tiêu đề X-Customer-Software và X-My-Custom.

add_header Kiểm soát truy cập-Cho phép-Tiêu đề "X-Custom-Software, X-My-Custom";

Kiểm soát truy cập-Expose-Headers

Các tiêu đề sau đây đã được liệt kê an toàn. Có nghĩa là, bạn không cần phải thêm nếu bạn muốn phơi bày chúng.

  • Hết hạn
  • Thực dụng
  • Kiểm soát bộ nhớ cache
  • Sửa đổi lần cuối
  • Nội dung ngôn ngữ
  • Loại nội dung

Nhưng, nếu bạn cần ngoài danh sách an toàn, thì bạn có thể cho phép họ như sau.

Apache

Sử dụng ký tự đại diện để hiển thị tất cả các tiêu đề.

Tiêu đề luôn đặt Tiêu đề-Kiểm soát-Tiếp cận-Tiêu đề "*"

Lưu ý: ký tự đại diện vẫn không hiển thị tiêu đề Ủy quyền và nếu bạn cần, bạn cần đề cập rõ ràng.

Tiêu đề luôn đặt Tiêu đề-Kiểm soát-Tiếp cận-Tiêu đề "Ủy quyền, *"

Kết quả sẽ như thế này.

Nginx

Nếu bạn muốn để lộ tiêu đề Origin.

add_header Access-Control-Expose-Headers "Gốc";

Kiểm soát truy cập tối đa

Bạn có biết dữ liệu từ các tiêu đề Access-Control-Allow-Headers và Access-Control-Allow-Methods có thể được lưu trong bộ nhớ cache không? Nó có thể được lưu trong bộ nhớ cache tối đa 24 giờ trong Firefox, 2 giờ trong Chrome (76+).

Để tắt bộ đệm, bạn có thể giữ giá trị là -1

Apache

Để lưu trữ trong 15 phút.

Tiêu đề luôn đặt Access-Control-Max-Age "900"

Như bạn có thể thấy, giá trị tính bằng giây.

Nginx

Để lưu trữ trong một giờ.

add_header Access-Control-Max-Age "3600";

Sau khi thêm, khởi động lại Nginx để xem kết quả.

Kiểm soát truy cập-Cho phép-Thông tin xác thực

Chỉ có một lựa chọn để đặt ở đây – đúng. Điều này là cho phép nếu bạn muốn tiết lộ thông tin đăng nhập như cookie, chứng chỉ TLS, ủy quyền.

Apache

Tiêu đề luôn đặt Kiểm soát truy cập-Cho phép-Thông tin xác thực "thật"

Nginx

add_header Kiểm soát truy cập-Cho phép-Thông tin xác thực "thật";

và kết quả.

Xác minh kết quả

Khi các tiêu đề cần thiết được thêm vào, bạn có thể sử dụng các công cụ dành cho nhà phát triển được xây dựng trong trình duyệt hoặc một trình kiểm tra tiêu đề HTTP trực tuyến.

Phần kết luận

Tôi hy vọng những điều trên giúp bạn triển khai tiêu đề CORS trong Apache HTTP và máy chủ web Nginx để bảo mật tốt hơn. Bạn cũng có thể quan tâm đến việc áp dụng các tiêu đề an toàn được đề xuất của OWASP.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map