• База знань
  • /
  • Блог
  • /
  • Wiki
  • /
  • ONLINE CHAT
+380 (44) 364 05 71

Стаття також доступна російською (перейти до перегляду).

Зміст:

Заголовки безпеки HTTP є важливою частиною безпеки сайту, оскільки вони захищають від різних типів атак, таких як XSS, SQL-ин'єкції і клікджекінг. Коли у веб-сервера запитується конкретний сайт, відповідь надається у вигляді заголовків відповіді HTTP, що повідомляють, як обробляти вміст сайту, а також містять: 

  • метадані;

  • коди стану;

  • правила кешування тощо.

Серед headers для безпеки HTTP є сім найважливіших, з точки зору безпеки, і саме про них мова піде нижче. 

Основі заголовки, що подбають про вашу безпеку

X-Frame-Options  

Основне призначення даного заголовка – захист від клікджекінгу. Нерідко зловмисники застосовують iframe, щоб отримати можливість відправляти спам або накручувати лайки: достатньо розмістити поверх нешкідливої, на перший погляд кнопки прозорий фрейм, і користувач, не знаючи цього, підписуватиметься на ютуб канал зловмисника або погоджуватиметься з відправкою йому повідомлень електронною поштою. Для захисту від клікджекінгу можуть застосовуватись три різні опції:

  • DENY: повністю вимикає функції iframe;

  • SAMEORIGIN: дозволяє iframe лише з того самого джерела, що і сайт;

  • ALLOW-FROM: дозволяє iframe лише з певних URL-адрес.

Сніпет, призначений для додання в .htaccess, для цього заголовка, якщо користуємося з apache, виглядає так:

<IfModulemod_headers.c>
  Header always append X-Frame-Options SAMEORIGIN
</IfModule>

Код для nginx виглядає таким чином:

add_header X-Frame-Options "SAMEORIGIN";

Для php використовується такий код:

header('X-Frame-Options: SAMEORIGIN’);

Strict-Transport-Security

Цей заголовок, який скорочено також називають HSTS, призначений для надання команди використовувати під час доступу до сайту лише з’єднання HTTPS. Він допомагає запобігти атакам типу "людина посередині", гарантуючи тим самим безпеку підключень до веб-сервера і унеможливлює перенаправлення відвідувачів на шкідливий сайт замість безпечної версії оригінального сайту. HSTS підтримують всі основні веб-браузери. Основні значення, які може мати такий елемент:

  • max-age - показує, як довго (у секундах) заголовок залишатиметься активним, тобто, як довго сайт буде доступний за допомогою протоколу HTTPS. Задане значення зазвичай становить 31536000 секунд (що дорівнює одному року).

  • includeSubDomains - необов'язкове значення HSTS, що вказує на те, що заголовок повинен діяти також на піддоменах.

  • preload - якщо вибрати цей параметр HSTS, сайт буде доступний завжди тільки на підставі захищеного протоколу. Необов'язковий параметр, який передбачає застосування списку довірених доменів. Щоб ваш домен також потрапив у цей список, потрібно подати заявку і почекати рішення, що зазвичай займає час.

До .htaccess треба додати цей код:

# HSTS - Only HTTPS connections
 <IfModulemod_headers.c>
   Header set Strict-Transport-Security "max-age=31536000;" 
</IfModule>

X-Content-Type-Options     

Це заголовок, що виступає своєрідним маркером, за допомогою якого виявляються спроби підміни типів MIME. Якщо встановлюється значення nosniff, браузер не буде виконувати жодного контенту, що подібний до  JavaScript і тип контенту якого вказано невірно. 

Цей елемент до apache можна додати за допомогою коду, який наведено нижче:

<IfModule mod_headers.c>
Header set X-Content-Type-Options "nosniff"
</IfModule>

Код для nginx виглядає таким чином:

add_header X-Content-Type-Options "nosniff";

Для php використовується такий код:

header('X-Content-Type-Options: nosniff');

Referrer-Policy    

Надзвичайно важливе рішення, що дозволяє убезпечити дані під час переходу за розміщеними на сайті посиланнями, що ведуть на сторонні ресурси. За замовчуванням рекомендується задавати значення same-origin, за допомогою якого можна також відстежувати, як відвідувачі переміщувалися між окремими сторінками сайту. Також слід зазначити, що цей заголовок підходить як для HTTP, так і HTML.

Додавання функції відбувається через .htaccess, де належить вписати:

# Referrer-Policy
<IfModulemod_headers.c>
    Header set Referrer-Policy "same-origin"
</IfModule>

Permissions-Policy     

Є підставою до опрацювання механізму, що дозволяє або забороняє застосування функцій браузера в документі або в його елементах. Заголовок містить директиви, в яких розташовані списки джерел і ключі, за допомогою яких може обмежуватися використання можливостей цих директив.

Content-Security-Policy

Ключовим завданням CSP є вказівка джерел, з яких може відбуватися завантаження ресурсів. Це один із найбільш багатозадачних параметрів, що мають застосування також для команди сайту робити завантаження виключно з одного вказаного домену або не виконувати скрипти inline. Найчастіше використовуваними параметрами є:

  • default-src - дає вказівку виконувати завантаження всіх ресурсів, що знаходяться в конкретному джерелі - скриптів, картинок, фреймів і т.п.;

  • script-src - дає вказівку щодо джерел, що можуть бути призначені для скриптів;

  • style-src- дає вказівку щодо джерел, що можуть бути призначені для стилів.

Елемент можна активувати, додаючи такий сніпет:

<IfModulemod_headers.c>
    Header set Content-Security-Policy-Report-Only: "script-src 'self'"
 </IfModule>

X-XSS-Protection

За допомогою цього елементу зупиняється завантаження сторінки під час виявлення факту атаки. Дане рішення критично необхідне користувачам, які віддють перевагу старшим версіям браузерів з низьким рівнем безпеки.  Заголовок аналізує GET або POST параметри з метою виявлення коду яваскрипт. Якщо такий виявляється, завантаження сторінки зупиняється, а на екрані з'являється попереджувальне повідомлення. Найбільш популярними є два значення заголовка:

  • 0 – повністю відключає фільтрацію XSS.

  • 1 - залишає фільтрацію XSS увімкненою, але при цьому при виявленні атаки робить очищення сторінки, прибираючи небезпечний вміст.

Додати сніпет apache можна використовуючи такий код:

<IfModule mod_headers.c>
Header set X-XSS-Protection "1; mode=block"
</IfModule>

Для nginx використовується інший код:

add_header X-XSS-Protection "1; mode=block";

А код для php виглядає таким чином:

header("X-XSS-Protection: 1; mode=block");

Що таке HTTP Headers?

Як перевірити, чи використовуютьсязаголовки безпеки?

Хочете перевірити свій сайт та з'ясувати, чи не намагаються зловмисники використовувати його у власних корисних цілях? Є три основні способи перевірки безпеки і кожен з них відрізняється високою ефективністю, зручністю та інтуїтивною навігацією.

Перевірка за допомогою сервісу онлайн

Сервіс для перевірки безпеки https://securityheaders.com - самий простий метод перевірки, до того ж алгоритм його вживання насправді елементарний: копіюємо адресу сайту,додаємо його до відповідного віконечка і натискаємо клавішу Scan.

Ми перевірили за допомогою сервісу сайт https://programer.in.ua/. Як можна бачити на скріні, політика безпеки вмісту була оцінена негативно, а це означає його низький рівень захисту від атак XSS.  

На https://securityheaders.com ведеться статистика здійснених перевірок: 3 102 320 сторінок www з 234 622 067, які було протестовано в сервісі, тобто 1,3%, відповідають всім критеріям перевірки.

Перевірка у браузері

Можна використовувати інструмент, доступний у браузері. Для цього достатньо перейти в закладку Inspect (Переглянути код), як показано на скриньці нижче.

Перевірка за допомогою плагіна

Якщо ви використовуєте Google Chrome, можна скористатися розширенням Live HTTP Headers або аналогічним, яке можна знайти в пошуку (для цього достатньо ввести HTTP Headers). Аналогічні рішення створено також для інших браузерів:

  • Fiddler;

  • Omnibug;

  • Apptalk.ninja і т.п.

Після встановлення плагіна його потрібно активувати, а потім зайти на сайт. Після завантаження сторінки стане зрозуміло, які саме заголовки безпеки було додано.

Запрошуємо скористатися нашим віртуальним хостингом за доступними цінами. В усіх тарифних планах домен безкоштовний, цілодобова підтримка 24/7, безкоштовний SSL сертифікат, щоденні бекапи та автоматичне встановлення CMS.
Підписуйтесь на наш телеграм–канал https://t.me/freehostua, щоб бути в курсі нових корисних матеріалів.
Дивіться наш канал Youtube на https://www.youtube.com/freehostua.
Ми у чомусь помилилися, чи щось пропустили?

Напишіть про це у коментарях, ми з задоволенням відповімо та обговорюємо Ваші зауваження та пропозиції.

 
Дата: 25.01.2023
Автор: Яременко Владислав за радакцією Євгена Шермана
Голосування

Авторам статті важлива Ваша думка. Будемо раді його обговорити з Вами:

comments powered by Disqus
navigate
go
exit
Дякуємо, що обираєте FREEhost.UA