Pytania rekrutacyjne z bezpieczeństwa aplikacji webowych (Middle) z odpowiedziami

75 pytań na rozmowę rekrutacyjną z tematu Bezpieczeństwo aplikacji webowych (Middle) - z poprawnymi odpowiedziami, wyjaśnieniami i linkami do dokumentacji.

Rozwiąż ten test
  1. 1.Wartość jest kodowana dla HTML i wstawiana do skryptu inline: <script>var q = '{{value}}';</script>. Dlaczego to wciąż niebezpieczne?
  2. 2.Które z tego jest ujściem (sink) dla DOM XSS?
  3. 3.Które z tego jest typowym źródłem (source) dla DOM XSS?
  4. 4.Dlaczego eval(userInput) lub new Function(userInput) są zawsze niebezpieczne?
  5. 5.Jak wygląda v-html w Vue pod kątem XSS?
  6. 6.Co robi bypassSecurityTrustHtml() w Angular?
  7. 7.Użytkownicy mogą wgrywać awatary SVG, serwowane z Twojej głównej domeny. Jakie jest ryzyko?
  8. 8.Aplikacja zamienia Markdown pisany przez użytkowników na HTML. Co musi się stać przed wstawieniem wyniku na stronę?
  9. 9.Dlaczego "czyść na wejściu i zapisz czystą wersję" jest mniej niezawodne niż kodowanie na wyjściu?
  10. 10.Co dodają Trusted Types do zwykłej ochrony przed XSS?
  11. 11.Aplikacja wstawia nazwę użytkownika do atrybutu bez cudzysłowów: <div title={{name}}>. Czym to jest gorsze od atrybutu w cudzysłowach?
  12. 12.Stan z renderowania po stronie serwera jest osadzany tak: <script>window.__STATE__ = ${JSON.stringify(state)}</script>. Na czym polega problem?
  13. 13.Jak działa CSP oparta na nonce?
  14. 14.Czym jest źródło CSP oparte na hashu, np. 'sha256-...'?
  15. 15.Co robi 'strict-dynamic' w script-src?
  16. 16.Dlaczego CSP w rodzaju script-src 'self' https://cdn.example.com https://www.google.com uważa się za słabą?
  17. 17.Przed czym chroni object-src 'none'?
  18. 18.Dlaczego restrykcyjna CSP powinna zawierać base-uri 'none' (lub 'self')?
  19. 19.Która dyrektywa CSP ogranicza, dokąd mogą iść połączenia fetch, XHR i WebSocket?
  20. 20.Czy CSP ustawiona w tagu <meta http-equiv> działa tak samo jak w nagłówku odpowiedzi?
  21. 21.Jak zwykle konfiguruje się CSP opartą na nonce w Next.js?
  22. 22.Jak zbierać raporty o naruszeniach CSP?
  23. 23.Czy SameSite=Lax w pełni zastępuje tokeny CSRF?
  24. 24.Czym jest wzorzec double-submit cookie?
  25. 25.Jak sprawdzanie nagłówka Origin pomaga przeciw CSRF?
  26. 26.Co mówi serwerowi nagłówek żądania Sec-Fetch-Site?
  27. 27.API przyjmuje tylko Content-Type: application/json. Dlaczego to utrudnia klasyczny CSRF?
  28. 28.Czym jest login CSRF?
  29. 29.Aplikacja uwierzytelnia wywołania API nagłówkiem Authorization: Bearer z tokenem w pamięci, a nie ciasteczkami. Czy CSRF jest problemem?
  30. 30.Dlaczego tokenów CSRF nie należy umieszczać w adresach URL (np. ?csrf=...)?
  31. 31.Dlaczego odbijanie dowolnego Origin żądania w Access-Control-Allow-Origin razem z credentials jest niebezpieczne?
  32. 32.Serwer dopuszcza każdy origin kończący się na example.com. Na czym polega błąd?
  33. 33.Dlaczego Access-Control-Allow-Origin: null nigdy nie powinien być dopuszczany z credentials?
  34. 34.Jaki nagłówek powinien dodać serwer, gdy odpowiedź zależy od Origin żądania?
  35. 35.Co kontroluje Access-Control-Max-Age?
  36. 36.Które nagłówki odpowiedzi z innego originu kod frontendu może domyślnie odczytać?
  37. 37.fetch wysyła credentials: 'include' do innego originu. Czego jeszcze trzeba, by przeglądarka udostępniła odpowiedź?
  38. 38.Które żądanie NIE wywołuje preflightu CORS?
  39. 39.Z jakich trzech części składa się JWT?
  40. 40.Czy payload podpisanego JWT (JWS) jest tajny?
  41. 41.Co musi sprawdzić serwer po otrzymaniu JWT?
  42. 42.Czym jest atak alg: none na JWT?
  43. 43.Dlaczego JWT trudniej unieważnić niż sesje po stronie serwera?
  44. 44.Czym jest rotacja refresh tokenów?
  45. 45.Dlaczego access tokeny zwykle żyją krótko (minuty), a refresh tokeny dłużej?
  46. 46.Co gwarantuje prefiks nazwy ciasteczka __Host-?
  47. 47.Jakie limity czasu sesji są zalecane?
  48. 48.Dlaczego przed zmianą e-maila lub hasła warto ponownie zapytać o hasło?
  49. 49.Który przepływ OAuth 2.0 jest dziś zalecany dla aplikacji jednostronicowej?
  50. 50.Jaki problem rozwiązuje PKCE?
  51. 51.Do czego służy parametr state w OAuth?
  52. 52.Dlaczego serwer autoryzacji musi dokładnie porównywać redirect_uri z zarejestrowanymi wartościami?
  53. 53.Czym różni się ID token OIDC od access tokenu OAuth?
  54. 54.Czym są scopes w OAuth?
  55. 55.Dlaczego aplikacja w przeglądarce nie powinna trzymać client secret OAuth?
  56. 56."Zaloguj przez Google" zwraca ID token do Twojego backendu. Co musi sprawdzić backend?
  57. 57.Czym jest IDOR (insecure direct object reference)?
  58. 58.Przycisk admina jest ukryty w interfejsie dla zwykłych użytkowników. Czy to kontrola dostępu?
  59. 59.Czym jest mass assignment?
  60. 60.Czym różni się RBAC od ABAC?
  61. 61.Dlaczego polityka autoryzacji "domyślnie zabronione" jest bezpieczniejsza?
  62. 62.SaaS z wieloma klientami (multi-tenant) filtruje dane po tenantId z treści żądania. Jakie jest ryzyko?
  63. 63.Jak zapobiec SQL injection?
  64. 64.Czym jest NoSQL injection, np. w MongoDB?
  65. 65.Które wywołanie Node.js jest najgroźniejsze z danymi od użytkownika?
  66. 66.Czym jest prototype pollution?
  67. 67.Jak zapobiec path traversal w endpoincie pobierania plików?
  68. 68.Czym jest server-side template injection?
  69. 69.Co robi X-Content-Type-Options: nosniff?
  70. 70.Jakie ryzyko zmniejsza nagłówek Referrer-Policy?
  71. 71.Do czego służy Permissions-Policy?
  72. 72.Co daje dodanie strony do listy HSTS preload?
  73. 73.Co robi Cross-Origin-Resource-Policy: same-origin?
  74. 74.Strona logowania po sukcesie przekierowuje na ?next=. Jak można to wykorzystać?
  75. 75.Co musi sprawdzać handler zdarzenia message dla postMessage?