Питання на співбесіді з веб-безпеки (Middle) з відповідями

75 запитань для співбесіди з теми Веб-безпека (Middle) - з правильними відповідями, поясненнями й посиланнями на документацію.

Пройти цей тест
  1. 1.Значення екранується для HTML і вставляється в inline-скрипт: <script>var q = '{{value}}';</script>. Чому це однаково небезпечно?
  2. 2.Що з цього - приймач (sink) для DOM XSS?
  3. 3.Що з цього - типове джерело (source) для DOM XSS?
  4. 4.Чому eval(userInput) чи new Function(userInput) завжди небезпечні?
  5. 5.Як щодо XSS із v-html у Vue?
  6. 6.Що робить bypassSecurityTrustHtml() в Angular?
  7. 7.Користувачі можуть завантажувати SVG-аватари, що віддаються з вашого основного домену. Який ризик?
  8. 8.Застосунок перетворює Markdown від користувачів на HTML. Що треба зробити перед вставкою результату в сторінку?
  9. 9.Чому "очищати на вході й зберігати чисту версію" менш надійно, ніж кодувати на виході?
  10. 10.Що додають Trusted Types до звичайного захисту від XSS?
  11. 11.Застосунок вставляє ім'я користувача в атрибут без лапок: <div title={{name}}>. Чим це гірше за атрибут у лапках?
  12. 12.Стан із серверного рендерингу вбудовується так: <script>window.__STATE__ = ${JSON.stringify(state)}</script>. У чому проблема?
  13. 13.Як працює CSP на основі nonce?
  14. 14.Що таке джерело CSP на основі хеша, як-от 'sha256-...'?
  15. 15.Що робить 'strict-dynamic' у script-src?
  16. 16.Чому CSP на кшталт script-src 'self' https://cdn.example.com https://www.google.com вважають слабкою?
  17. 17.Від чого захищає object-src 'none'?
  18. 18.Чому сувора CSP має містити base-uri 'none' (чи 'self')?
  19. 19.Яка директива CSP обмежує, куди можуть іти з'єднання fetch, XHR і WebSocket?
  20. 20.Чи однакова CSP, задана в тегу <meta http-equiv>, і CSP в заголовку відповіді?
  21. 21.Як зазвичай налаштовують CSP на основі nonce в Next.js?
  22. 22.Як збирати звіти про порушення CSP?
  23. 23.Чи повністю замінює SameSite=Lax CSRF-токени?
  24. 24.Що таке патерн double-submit cookie?
  25. 25.Як перевірка заголовка Origin допомагає проти CSRF?
  26. 26.Що повідомляє серверу заголовок запиту Sec-Fetch-Site?
  27. 27.API приймає лише Content-Type: application/json. Чому це ускладнює класичний CSRF?
  28. 28.Що таке login CSRF?
  29. 29.Застосунок автентифікує виклики API заголовком Authorization: Bearer із токеном у пам'яті, а не cookies. Чи актуальний CSRF?
  30. 30.Чому CSRF-токени не варто класти в URL (наприклад, ?csrf=...)?
  31. 31.Чому віддзеркалювати будь-який Origin запиту в Access-Control-Allow-Origin разом із credentials небезпечно?
  32. 32.Сервер дозволяє будь-який origin, що закінчується на example.com. У чому вада?
  33. 33.Чому Access-Control-Allow-Origin: null ніколи не можна дозволяти з credentials?
  34. 34.Який заголовок має додати сервер, коли відповідь залежить від Origin запиту?
  35. 35.Що регулює Access-Control-Max-Age?
  36. 36.Які заголовки міжсайтової відповіді фронтенд-код може прочитати за замовчуванням?
  37. 37.fetch надсилає credentials: 'include' на інший origin. Що ще потрібно, щоб браузер показав відповідь?
  38. 38.Який запит НЕ викликає preflight CORS?
  39. 39.Із яких трьох частин складається JWT?
  40. 40.Чи секретний payload підписаного JWT (JWS)?
  41. 41.Що має перевірити сервер, отримавши JWT?
  42. 42.Що таке атака alg: none на JWT?
  43. 43.Чому JWT важче відкликати, ніж серверні сесії?
  44. 44.Що таке ротація refresh-токенів?
  45. 45.Чому access-токени зазвичай живуть недовго (хвилини), а refresh-токени довше?
  46. 46.Що гарантує префікс назви cookie __Host-?
  47. 47.Які таймаути сесії рекомендовані?
  48. 48.Чому перед зміною email чи пароля варто знову запитати пароль?
  49. 49.Який потік OAuth 2.0 рекомендують сьогодні для односторінкового застосунку?
  50. 50.Яку проблему розв'язує PKCE?
  51. 51.Для чого параметр state в OAuth?
  52. 52.Чому сервер авторизації має звіряти redirect_uri точно із зареєстрованими значеннями?
  53. 53.Чим ID-токен OIDC відрізняється від access-токена OAuth?
  54. 54.Що таке scopes в OAuth?
  55. 55.Чому браузерний застосунок не повинен тримати client secret OAuth?
  56. 56."Увійти через Google" повертає ID-токен вашому бекенду. Що має перевірити бекенд?
  57. 57.Що таке IDOR (insecure direct object reference)?
  58. 58.Кнопку адміна сховано в інтерфейсі для звичайних користувачів. Чи це контроль доступу?
  59. 59.Що таке mass assignment?
  60. 60.Чим RBAC відрізняється від ABAC?
  61. 61.Чому політика авторизації "заборонено за замовчуванням" безпечніша?
  62. 62.Мультитенантний SaaS фільтрує дані за tenantId з тіла запиту. Який ризик?
  63. 63.Як запобігти SQL-ін'єкції?
  64. 64.Що таке NoSQL-ін'єкція, наприклад у MongoDB?
  65. 65.Який виклик Node.js найнебезпечніший із даними від користувача?
  66. 66.Що таке prototype pollution?
  67. 67.Як запобігти path traversal в ендпоїнті завантаження файлів?
  68. 68.Що таке server-side template injection?
  69. 69.Що робить X-Content-Type-Options: nosniff?
  70. 70.Який ризик зменшує заголовок Referrer-Policy?
  71. 71.Для чого Permissions-Policy?
  72. 72.Що дає додавання сайту до HSTS preload list?
  73. 73.Що робить Cross-Origin-Resource-Policy: same-origin?
  74. 74.Сторінка входу після успіху перенаправляє на ?next=. Як цим можна зловживати?
  75. 75.Що має перевіряти обробник події message для postMessage?