Alle drei entstehen dadurch, dass nicht vertrauenswürdige Eingaben in einen vertrauenswürdigen Kontext gemischt werden. Stopp SQL Injection mit parametrisierten Queries, niemals mit String-Verkettung. Stopp XSS mit kontextabhängigem Output-Encoding, indem du rohe HTML-Injektion meidest, jedes HTML sanitizest, das du rendern musst, und eine strikte Content Security Policy setzt. Stopp CSRF mit SameSite-Cookies plus einem Token pro Session auf zustandsändernden Requests, oder mit einem eigenen Header, den ein fremdes Formular nicht setzen kann.
Warum Interviewer das fragen
Das sind die Bugs, wegen derer Produkte kompromittiert werden, der Interviewer will also Grundkompetenz plus ein Gespür für Defense in Depth. Er hört darauf, ob du den Mechanismus benennst statt einer Bibliothek, ob du weißt, dass CSRF nur bei cookie-basierter Auth relevant ist, und ob du Validierung und Encoding als verschiedene Aufgaben behandelst. Wer sagt, er sanitize alle Eingaben, übersieht meist den Kontextteil.
So baust du deine Antwort auf
- Rahme alle drei als nicht vertrauenswürdige Daten, die einen vertrauenswürdigen Kontext erreichen.
- Gib für jedes die primäre Verteidigung in einer Zeile.
- Ergänz für mindestens eines eine zweite Schicht.
- Erwähn, wo Framework-Voreinstellungen dich schon schützen.
Beispielantwort
Ich denke an sie als eine Form: Daten von einem Nutzer landen irgendwo, wo sie interpretiert werden. Bei SQL ist der Interpreter die Datenbank, parametrisierte Queries oder ein Query Builder, der Werte bindet, lösen es also vollständig, und es gibt keinen akzeptablen Grund, einen String zu verketten. Bei XSS ist der Interpreter der Browser, und der springende Punkt ist, dass Escaping kontextabhängig ist. React escaped Textknoten für mich, das Risiko konzentriert sich also in den Notausgängen: rohe HTML-Injektion, href-Werte, die eine javascript-URL sein könnten, und alles, was direkt ins DOM geschrieben wird. Wo ein Produkt wirklich Nutzer-HTML braucht, etwa ein Rich-Text-Feld, sanitize ich serverseitig mit einer Allowlist-Bibliothek und ergänze eine strikte CSP als zweite Schicht, damit ein Durchrutscher nicht automatisch eine Kontoübernahme ist. CSRF greift nur, wenn der Browser Credentials automatisch anhängt, SameSite auf Lax killt also das meiste davon, und ich ergänze trotzdem ein Token pro Session auf allem, was Zustand ändert. Cookies bekommen selbstverständlich httpOnly und Secure.
Steht dieses Vorstellungsgespräch bald an? GhostPilot hört bei deinem Live-Call mit, erkennt die Frage in dem Moment, in dem sie gestellt wird, und bringt dir eine strukturierte Antwort in Echtzeit auf den Bildschirm. Probier es im nächsten Mock aus, oder hol dir einen $29 Session Pass, kein Abo, für den Ernstfall.
So funktioniert esNachfragen, mit denen du rechnen solltest
- Wo lässt dich SameSite Lax weiterhin ungeschützt?
- Was ist der Unterschied zwischen stored, reflected und DOM-basiertem XSS?
- Wie würdest du eine Content Security Policy in einer bestehenden App ausrollen?
Weitere Fragen für Full-Stack-Entwickler
Dein Interviewer stellt seine eigene Version davon. Kopier deine echte Stellenbeschreibung in den kostenlosen Question Predictor und bekomm die 20 Fragen, die diese Rolle am wahrscheinlichsten stellt, samt dem, worauf jede wirklich abzielt.
Meine Fragen vorhersagen