⚡ Как включить CORS в Apache и Nginx? — Information Security Squad
⚡ Как включить CORS в Apache и Nginx?

Ограничьте или разрешите совместное использование ресурсов между сайтами, используя заголовок CORS.

Заголовок CORS (Cross-Origin Resource Sharing) поддерживается во всех современных браузерах.

По умолчанию браузер ограничивает cros-origin HTTP-запросы через скрипт.

И CORS может быть полезен для повторного использования общих ресурсов приложений в других веб-приложениях.

Как только он добавлен правильно, он инструктирует браузер загрузить приложение из другого источника.

Существует шесть популярных типов заголовков CORS, которые сервер может отправлять.

Давайте исследуем их.

1 Access-Control-Allow-Origin

Самый популярный тип, который говорит браузеру загружать ресурсы по разрешенному источнику.

Он поддерживает подстановочные знаки (*), и при этом любой домен может загружать ресурсы.

Тем не менее, он имеет возможность разрешить конкретный источник.

Apache

Добавьте следующее в httpd.conf или любой другой используемый файл конфигурации.

Header set Access-Control-Allow-Origin "*"
Перезапустите Apache для проверки.
Вы должны увидеть что-то подобное заголовках.
И, чтобы разрешить доступ от определенного источника (например: https://gf.dev), вы можете использовать следующее:
Header set Access-Control-Allow-Origin "https://gf.dev"

Nginx

Вот пример, чтобы разрешить происхождение https://itisgood.ru.
Добавьте следующее в блок сервера nginx.conf или в используемый файл конфигурации.
add_header Access-Control-Allow-Origin "https://itisgood.ru";

2 Access-Control-Allow-Methods

Браузер может инициировать один или несколько методов HTTP для доступа к ресурсам.

Пример: — GET, PUT, OPTIONS, PUT, DELETE, POST

Apache

Разрешить только GET и только POST.
Header add Access-Control-Allow-Methods "GET, POST"

Nginx

Допустим, вам нужно добавить методы DELETE и OPTIONS, тогда вы можете это сделать, как показано ниже:
add_header Access-Control-Allow-Methods "DELETE, OPTIONS";

3 Access-Control-Allow-Headers

Следующие заголовки находятся в безопасном списке, поэтому вам не нужно добавлять их.
Они должно работать по умолчанию.
  • Content-Type
  • Accept
  • Content-Language
  • Accept-Language
Однако, если вам нужно добавить пользовательский вариант, вы можете сделать это.
Поддерживает один или несколько заголовков.

Apache

Допустим, вы хотите разрешить заголовки X-Custom-Header и X-Powered-By.

Header always set Access-Control-Allow-Headers "X-Custom-Header, X-Powered-By"

Nginx

Пример добавления X-Customer-Software и X-My-Custom заголовка.

add_header Access-Control-Allow-Headers "X-Custom-Software, X-My-Custom";

4 Access-Control-Expose-Headers

Следующие заголовки уже находятся в безопасном списке.
Значит, вам не нужно их добавлять.
  • Expires
  • Pragma
  • Cache-Control
  • Last-Modified
  • Content-Language
  • Content-Type
Но, если вам нужен не безопасный список, вы можете разрешить их следующим образом.

Apache

Используйте подстановочный знак, чтобы раскрыть все заголовки.

Header always set Access-Control-Expose-Headers "*"
Примечание: подстановочный знак все еще не предоставляет заголовок авторизации, и если он вам нужен, вам нужно упомянуть его явно.
Header always set Access-Control-Expose-Headers "Authorization, *"

Nginx

Если вы хотите выставить заголовок Origin.

add_header Access-Control-Expose-Headers "Origin";

5 Access-Control-Max-Age

Знаете ли вы, что данные из заголовков Access-Control-Allow-Headers и Access-Control-Allow-Methods можно кэшировать?

В Firefox его можно кэшировать до 24 часов, в Chrome — 2 часа (76+).

Чтобы отключить кеширование, вы можете оставить значение -1 

Apache

Кешировать на 15 минут.

Header always set Access-Control-Max-Age "900"

Как видите, значение в секундах.

Nginx

Кешировать на один час.

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

6 Access-Control-Allow-Credentials

Здесь есть только один вариант — true.

Это необходимо, если вы хотите предоставить такие учетные данные, как файлы cookie, сертификаты TLS, авторизацию.

Apache

Header always set Access-Control-Allow-Credentials "true"

Nginx

add_header Access-Control-Allow-Credentials "true";

Заключение

Я надеюсь, что вышеизложенное поможет вам реализовать заголовок CORS в Apache HTTP и веб-сервере Nginx для повышения безопасности.

 

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *