Pytania rekrutacyjne z bezpieczeństwa aplikacji webowych z odpowiedziami
XSS, CSRF, CSP i CORS w praktyce, ciasteczka i sesje, uwierzytelnianie z JWT, OAuth i passkeys, autoryzacja, wstrzykiwanie, nagłówki bezpieczeństwa i łańcuch dostaw.
225 pytań na rozmowę rekrutacyjną z tematu Bezpieczeństwo aplikacji webowych z odpowiedziami i wyjaśnieniami - poziomy Junior, Middle i Senior. Przykładowe pytania, testy online i zadania z kodu.
- XSS
- CSRF
- CSP
- OAuth
- OWASP Top 10
Pytania według poziomu
Junior
Podstawowe pojęcia i składnia · 50 pytań
Middle
Praktyka, niuanse i optymalizacja · 50 pytań
Senior
Architektura, mechanizmy wewnętrzne, przypadki brzegowe · 50 pytań
Przykładowe pytania
Kilka pytań z każdego poziomu z poprawną odpowiedzią i wyjaśnieniem.
Bezpieczeństwo aplikacji webowych · Junior
- Co oznacza triada CIA w bezpieczeństwie informacji?
Poprawna odpowiedź: Poufność, integralność, dostępność
Poufność oznacza, że dane widzą tylko uprawnione osoby, integralność - że nikt ich nie zmienia bez zgody, a dostępność - że system działa, gdy jest potrzebny. Większość ataków uderza w co najmniej jeden z tych trzech elementów.
- Formularz sprawdza w JavaScript, że wiek to liczba od 18 do 120. Czy to wystarczy, by chronić serwer?
Poprawna odpowiedź: Nie: atakujący może pominąć stronę i wysłać dowolne żądanie bezpośrednio, więc serwer też musi walidować
Walidacja po stronie klienta służy wygodzie użytkownika. Każdy może wysłać żądanie przez curl czy DevTools, więc każdą ważną regułę trzeba sprawdzić ponownie na serwerze.
- Czym jest OWASP Top 10?
Poprawna odpowiedź: Regularnie aktualizowaną listą najpoważniejszych zagrożeń dla aplikacji webowych
OWASP (Open Worldwide Application Security Project) publikuje Top 10 jako dokument budujący świadomość. Wśród pozycji są złamana kontrola dostępu, wstrzykiwanie i błędna konfiguracja.
- Co oznacza zasada najmniejszych uprawnień?
Poprawna odpowiedź: Każdy użytkownik, usługa czy token dostaje tylko te uprawnienia, których potrzebuje do pracy, i nic więcej
Gdy przejęte zostanie konto lub klucz z minimalnymi uprawnieniami, szkody są ograniczone. Na przykład użytkownik bazy do raportu tylko do odczytu nie powinien móc usuwać tabel.
Bezpieczeństwo aplikacji webowych · Middle
- Wartość jest kodowana dla HTML i wstawiana do skryptu inline:
<script>var q = '{{value}}';</script>. Dlaczego to wciąż niebezpieczne?Poprawna odpowiedź: Kodowanie HTML nie chroni kontekstu tekstu w JavaScript; wartość wymaga kodowania dla JS lub przekazania w inny sposób
Każdy kontekst ma własne reguły kodowania. Najbezpieczniej go unikać: umieść dane w atrybucie
data-lub bloku JSON i odczytaj je ze swojego skryptu. - Które z tego jest ujściem (sink) dla DOM XSS?
Poprawna odpowiedź:
element.insertAdjacentHTML()Ujścia parsują teksty jako HTML lub kod:
innerHTML,outerHTML,insertAdjacentHTML,document.write,eval,setTimeout(string)i właściwości URL przyjmującejavascript:. - Które z tego jest typowym źródłem (source) dla DOM XSS?
Poprawna odpowiedź:
location.hashŹródła to wartości kontrolowane przez atakującego: adres (
location,hash,search),document.referrer, danepostMessagei zapisane wartości od innych użytkowników. - Dlaczego
eval(userInput)lubnew Function(userInput)są zawsze niebezpieczne?Poprawna odpowiedź: Uruchamiają dowolny tekst jako kod z uprawnieniami strony
Jeśli jakakolwiek część tekstu pochodzi od użytkowników, to oni kontrolują kod. Restrykcyjna CSP też blokuje takie wywołania, chyba że ustawiono
'unsafe-eval'.
Bezpieczeństwo aplikacji webowych · Senior
- W czym pomaga model STRIDE?
Poprawna odpowiedź: W znajdowaniu zagrożeń według kategorii: podszywanie, manipulacja, wypieranie się, ujawnienie informacji, odmowa usługi, podniesienie uprawnień
Przejście przez każdą kategorię dla każdego komponentu i przepływu danych zmniejsza szansę, że umknie cała klasa zagrożeń.
- Kiedy modelowanie zagrożeń jest najbardziej przydatne?
Poprawna odpowiedź: Podczas projektowania, zanim architektura zostanie ustalona, i ponownie, gdy znacząco się zmienia
Błędy projektowe, jak zaufanie do roli z klienta, tanio naprawia się na tablicy, a drogo na produkcji.
- Jaka jest główna idea architektury zero trust?
Poprawna odpowiedź: Brak domyślnego zaufania wynikającego z położenia w sieci: każde żądanie jest uwierzytelniane i autoryzowane
Bycie w VPN czy klastrze nie czyni wywołania zaufanym. Usługi sprawdzają tożsamość i uprawnienia przy każdym żądaniu.
- Do czego służy OWASP ASVS?
Poprawna odpowiedź: To szczegółowa lista weryfikowalnych wymagań bezpieczeństwa, pogrupowanych według poziomów, do projektowania i testowania aplikacji
Top 10 buduje świadomość, a ASVS to lista kontrolna, z której można tworzyć wymagania i plany testów.
Testy łączone z tym tematem
Pytania z kilku tematów naraz - jak na rozmowie rekrutacyjnej na konkretne stanowisko.
Zadania z kodu
Napisz rozwiązanie prosto w przeglądarce, a testy od razu je sprawdzą. Klasyka rozmów rekrutacyjnych z JavaScriptu (debounce, deepClone, Promise.all, cache LRU), z TypeScriptu (generyki, zawężanie i typy narzędziowe, sprawdza prawdziwy kompilator) i z Reacta: komponenty i hooki, takie jak lista zadań, zakładki, useDebounce i useInterval.
Otwórz zadania →