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


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

Мога ли да използвам корс? Данните за поддръжката на cors се предлагат в основните браузъри от caniuse.com.

По подразбиране браузърът ограничава кръстосаните HTTP заявки чрез скриптове. И, CORS може да бъде удобно за повторно използване на общите ресурси на приложения в други уеб приложения. След като бъде добавено правилно, той инструктира браузъра да зареди приложението от различен произход.

Има шест популярни типа CORS заглавки, които сървърът може да изпрати. Нека ги изследваме.

Access-Control-Allow-Origin

Най-популярният, който казва на браузъра да зарежда ресурсите на разрешения произход. Той поддържа wildcard (*) и по този начин всеки домейн може да зареди ресурсите. Той обаче има опция да разреши конкретен произход.

Apache

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

Комплект заглавки Access-Control-Allow-Origin "*"

Рестартирайте Apache, за да тествате. Трябва да ги видите в заглавките на отговорите.

И, за да разрешите от конкретен произход (напр .: https://gf.dev), можете да използвате следното.

Комплект заглавки Access-Control-Allow-Origin "https://gf.dev"

Nginx

Ето пример за разрешаване на произход https://geekflare.dev. Добавете следното в сървърния блок на nginx.conf или в конфигурационния файл, който се използва.

add_header Access-Control-Allow-Origin "https://geekflare.dev";

За контрол на достъпа допускане-Методи

Браузърът може да инициира един или повече HTTP методи за достъп до ресурсите. Например: – ВЗЕМЕТЕ, PUT, ОПЦИИ, PUT, DELETE, POST

Apache

За да разрешите само GET и POST.

Header добавете методи за контрол на достъпа-разрешаване "ВЗЕМЕТЕ, ПОСЛ"

Nginx

Нека да кажем, че трябва да добавите методи DELETE и OPTIONS, след което можете да добавите както по-долу.

add_header методи за контрол на достъпа-разрешаване "ИЗТРИВАНЕ, ОПЦИИ";

След рестартирането трябва да ги видите в заглавките на отговорите.

Access-Control-Allow-Заглавия

Следните заглавия са в сафлист, което означава, че не е необходимо да добавяте такова. Тя трябва да работи по подразбиране.

  • Тип съдържание
  • приемам
  • Content-Language
  • Accept-Language

Ако обаче трябва да добавите персонализиран такъв, можете да го направите. Той поддържа една или повече заглавки.

Apache

Да речем, че искате да разрешите заглавия на X-Custom и X-Powered-By.

Заглавките винаги задават Access-Control-Allow-Headers "X-Custom-Header, X-Powered-By"

След рестартиране трябва да видите резултата в заглавките на отговорите.

Nginx

Пример за добавяне на X-клиент-софтуер и заглавие X-My-Custom.

add_header Access-Control-Allow-Headers "X-Custom софтуер, X-My-Custom";

Access-Control-Expose-Заглавия

Следващите заглавия са вече сигурен списък. Значи, не е нужно да добавяте, ако искате да ги изложите.

  • Изтича
  • Pragma
  • Cache-Control
  • Последно модифициран
  • Content-Language
  • Тип съдържание

Но ако имате нужда от различен от безопасния списък, тогава можете да ги разрешите по следния начин.

Apache

Използвайте заместващ знак, за да разкриете всички хедъри.

Заглавките винаги задават Access-Control-Expose-Headers "*"

Забележка: wildcard все още не излага заглавието на оторизацията и ако имате нужда, трябва да споменете изрично.

Заглавките винаги задават Access-Control-Expose-Headers "Упълномощаване, *"

Резултатът трябва да изглежда така.

Nginx

Ако искате да изложите заглавието на Origin.

add_header Access-Control-Expose-Headers "произход";

Access-Control-Max-Age

Знаете ли, че данните от заглавките на Access-Control-Allow-Headers и Access-Control-Allow-Method могат да се кешират? Може да се кешира до 24 часа в Firefox, 2 часа в Chrome (76+).

За да деактивирате кеширането, можете да запазите стойността като -1

Apache

Да се ​​кешира за 15 минути.

Заглавката винаги е зададена Access-Control-Max-Age "900"

Както можете да видите, стойността е в секунди.

Nginx

Да се ​​кешира за един час.

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

След като го добавите, рестартирайте Nginx, за да видите резултатите.

Контрол на достъпа допускане-Credentials

Тук има само една опция да се зададе – вярно. Това е да се позволи, ако искате да изложите идентификационни данни като бисквитки, TLS сертификати, оторизация.

Apache

Заглавката винаги задава настройките за контрол на достъпа-разрешаване на пълномощията "вярно"

Nginx

add_header Access-Control-Allow-Credentials "вярно";

и резултатът.

Проверка на резултатите

След като се добавят необходимите заглавки, можете да използвате вградени в браузъра инструменти за разработчици или онлайн проверка на HTTP заглавието на HTTP.

заключение

Надявам се, че горното ви помага да внедрите заглавката на CORS в Apache HTTP и уеб сървъра Nginx за по-добра сигурност. Може да се интересувате и от прилагането на препоръчани защитени заглавки от OWASP.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me