Питання на співбесіді з веб-безпеки з відповідями
XSS, CSRF, CSP і CORS на практиці, cookies і сесії, автентифікація з JWT, OAuth і passkeys, авторизація, ін'єкції, заголовки безпеки й ланцюжок постачання.
225 запитань для співбесіди з теми Веб-безпека з відповідями й поясненнями - рівні Junior, Middle і Senior. Приклади запитань, онлайн-тести й задачі на код.
- XSS
- CSRF
- CSP
- OAuth
- OWASP Top 10
Запитання за рівнями
Junior
Базові поняття та синтаксис · 50 запитань
Middle
Практика, нюанси й оптимізація · 50 запитань
Senior
Архітектура, внутрішня будова, edge cases · 50 запитань
Приклади запитань
Кілька запитань із кожного рівня з правильною відповіддю й поясненням.
Веб-безпека · Junior
- Що означає тріада CIA в інформаційній безпеці?
Правильна відповідь: Конфіденційність, цілісність, доступність
Конфіденційність означає, що дані бачать лише ті, кому можна, цілісність - що їх не змінюють без дозволу, а доступність - що система працює, коли потрібна. Більшість атак б'є щонайменше по одній із трьох.
- Форма перевіряє в JavaScript, що вік - це число від 18 до 120. Чи досить цього, щоб захистити сервер?
Правильна відповідь: Ні: зловмисник може оминути сторінку й надіслати будь-який запит напряму, тому сервер теж мусить перевіряти
Перевірка на клієнті потрібна для зручності. Будь-хто може надіслати запит через curl чи DevTools, тому кожне важливе правило треба перевірити ще раз на сервері.
- Що таке OWASP Top 10?
Правильна відповідь: Список найкритичніших ризиків безпеки вебзастосунків, який регулярно оновлюють
OWASP (Open Worldwide Application Security Project) публікує Top 10 як документ для підвищення обізнаності. Серед пунктів - порушений контроль доступу, ін'єкції та помилки конфігурації.
- Що означає принцип найменших привілеїв?
Правильна відповідь: Кожен користувач, сервіс чи токен отримує лише ті права, які потрібні для його роботи, і не більше
Якщо скомпрометовано акаунт чи ключ із мінімальними правами, шкода обмежена. Наприклад, користувач бази для звіту лише на читання не повинен мати змоги видаляти таблиці.
Веб-безпека · Middle
- Значення екранується для HTML і вставляється в inline-скрипт:
<script>var q = '{{value}}';</script>. Чому це однаково небезпечно?Правильна відповідь: HTML-екранування не захищає контекст рядка JavaScript; значенню потрібне JS-кодування або інший спосіб передавання
Кожен контекст має свої правила екранування. Найбезпечніше його уникати: покласти дані в атрибут
data-чи JSON-блок і прочитати зі свого скрипту. - Що з цього - приймач (sink) для DOM XSS?
Правильна відповідь:
element.insertAdjacentHTML()Приймачі розбирають рядки як HTML чи код:
innerHTML,outerHTML,insertAdjacentHTML,document.write,eval,setTimeout(string)і властивості URL, що приймаютьjavascript:. - Що з цього - типове джерело (source) для DOM XSS?
Правильна відповідь:
location.hashДжерела - це значення, які контролює зловмисник: адреса (
location,hash,search),document.referrer, даніpostMessageі збережені значення від інших користувачів. - Чому
eval(userInput)чиnew Function(userInput)завжди небезпечні?Правильна відповідь: Вони виконують будь-який рядок як код із правами сторінки
Якщо будь-яка частина рядка надходить від користувачів, код контролюють вони. Сувора CSP теж блокує такі виклики, якщо не задано
'unsafe-eval'.
Веб-безпека · Senior
- У чому допомагає модель STRIDE?
Правильна відповідь: Знаходити загрози за категоріями: підміна, втручання, відмова від дій, розкриття інформації, відмова в обслуговуванні, підвищення привілеїв
Якщо пройти кожну категорію для кожного компонента й потоку даних, менше шансів пропустити цілий клас загроз.
- Коли моделювання загроз найкорисніше?
Правильна відповідь: Під час проєктування, до того як архітектуру зафіксовано, і знову, коли вона суттєво змінюється
Помилки проєкту, як-от довіра до ролі з клієнта, дешево виправити на дошці й дорого в продакшні.
- У чому головна ідея архітектури нульової довіри (zero trust)?
Правильна відповідь: Жодної неявної довіри через розташування в мережі: кожен запит автентифікується й авторизується
Перебування у VPN чи кластері не робить виклик довіреним. Сервіси перевіряють ідентичність і дозволи на кожен запит.
- Для чого використовують OWASP ASVS?
Правильна відповідь: Це детальний перелік перевірюваних вимог безпеки, згрупованих за рівнями, для проєктування й тестування застосунків
Top 10 підвищує обізнаність, а ASVS - це чекліст, з якого можна будувати вимоги й плани тестування.
Збірні тести з цією темою
Запитання з кількох тем одразу - як на співбесіді на конкретну вакансію.
Задачі на код
Напишіть рішення просто в браузері - тести перевірять його одразу. Класика співбесід на JavaScript (debounce, deepClone, Promise.all, LRU-кеш), на TypeScript (дженерики, звуження й утилітні типи, перевіряє справжній компілятор) і на React: компоненти й хуки на кшталт списку справ, вкладок, useDebounce та useInterval.
Відкрити задачі →