Cheat sheet з безпеки вебсайтів

Авторка: Катерина Іваненко, Brand Manager (Invicti & Acunetix) в CoreWin

У статті наведено “шпаргалку” з безпеки вебсайтів – компактний та практичний посібник, що охоплює основні найкращі практики для захищеності вебзастосунків.

1. Безпека сервера та хостингу

  • Використання HTTPS для всіх сторінок (рекомендується застосовувати HSTS (HTTP Strict Transport Security)).
  • Оновлення операційної системи та програмного забезпечення сервера.
  • Обмеження доступу за допомогою брандмауерів, білого списку IP-адрес та автентифікації за ключами SSH.
  • Вимкнення непотрібних служб та портів.

2. Автентифікація та контроль доступу

  • Застосування політик надійних паролів.
  • Впровадження багатофакторної автентифікації.
  • Використання механізмів сторонньої автентифікації, таких як OAuth 2.0 або OpenID Connect, із забезпеченням коректної перевірки токенів і захищеної обробки переадресацій.
  • Запобігання brute-force атакам за допомогою обмеження кількості запитів та блокування облікових записів.
  • Встановлення тайм-аутів сесій та використання безпечних параметрів cookie (HttpOnly, Secure, SameSite=Lax або Strict) для запобігання крадіжці або зловживанню.

3. Запобігання поширеним атакам

  • Очищення всіх вхідних даних користувача.
  • Екранування або кодування вихідних даних на основі їх контексту (HTML, JavaScript, CSS, URL тощо) для запобігання вразливостям ін’єкцій.
  • XSS (міжсайтовий скриптинг): кодування вихідних даних з урахуванням контексту та застосування заголовків політики безпеки контенту (CSP, Content Security Policy).
  • SQL-ін’єкція: використання параметризованих запитів та безпечних фреймворків ORM.
  • CSRF (міжсайтова підробка запиту): застосування анти-CSRF токенів та встановлення атрибутів cookie SameSite (Lax або Strict).
  • Обхід каталогу: перевірка шляхів (paths) до файлів, обмеження безпечними каталогами та уникнення прямого використання шляхів, наданих користувачем.
  • Ін’єкція команд: ніколи не передавати вхідні дані користувача безпосередньо системним командам.

4. Безпечна обробка файлів

  • Перевірка типів файлів та MIME (медіа).
  • Використання рандомізованих та очищених назв файлів.
  • Зберігання завантажених файлів поза доступним вебкаталогом для запобігання прямому доступу.
  • Встановлення суворих дозволів на доступ до файлів (наприклад, 0644) та вимкнення дозволів на виконання завантажених файлів.
  • Обмеження розміру файлу.

5. Безпечні конфігурації та секрети

  • Уникнення жорсткого кодування ключів API, паролів або облікових даних у вихідному коді для запобігання їх розкриття.
  • Використання безпечного сховища для секретів.
  • Видалення дебаг коду та детальних повідомлень про помилки у продакшні.

6. Заголовки (хедери) та безпека вмісту

  • Встановлення надійних заголовків безпеки:

Content-Security-Policy
Strict-Transport-Security
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
Referrer-Policy: no-referrer

  • Вимкнення непотрібних функцій браузера за допомогою Permissions-Policy.

7. Моніторинг та логування

  • Ведення журналу спроб входу, змін та помилок, але без логування конфіденційних даних.
  • Використання WAF (брандмауерів вебзастосунків).
  • Моніторинг змін файлів, аномалій трафіку та спроб вторгнення.

8. Тестування безпеки та виправлення

  • Регулярне тестування безпеки за допомогою інструментів DAST, таких як Invicti (раніше Netsparker), та рішень SAST, таких як Mend.io. Якщо ви бажаєте безкоштовно протестувати ці рішення, ви можете зв’язатися з нами зручним для вас способом.
  • Використання інструментів перевірки залежностей, таких як Mend.io.
  • Своєчасне застосування виправлень.

9. Безпечний життєвий цикл розробки ПЗ (SDLC)

  • Врахування безпеки на ранніх етапах.
  • Впровадження рекомендацій щодо безпечного написання коду.
  • Створення конвеєрів DevSecOps з автоматизованим скануванням безпеки.

Таким чином, команди можуть покращити рівень безпеки вебсайтів компанії та забезпечити їх стійкість у сучасному ландшафті загроз.

Підписатися на новини