Les trois viennent du mélange d'entrées non fiables dans un contexte de confiance. Bloquez l'injection SQL avec des requêtes paramétrées, jamais par concaténation de chaînes. Bloquez le XSS avec un encodage de sortie adapté au contexte, en évitant l'injection de HTML brut, en assainissant tout HTML que vous devez rendre, et avec une Content Security Policy stricte. Bloquez le CSRF avec des cookies SameSite plus un jeton par session sur les requêtes qui changent l'état, ou un en-tête personnalisé qu'un formulaire d'un autre site ne peut pas poser.
Pourquoi les recruteurs posent cette question
Ce sont les bugs qui font compromettre des produits, donc le recruteur veut une compétence de base plus un sens de la défense en profondeur. Il écoute si vous nommez le mécanisme plutôt qu'une bibliothèque, si vous savez que le CSRF ne concerne que l'authentification par cookie, et si vous traitez la validation et l'encodage comme deux métiers différents. Un candidat qui dit qu'il assainit toutes les entrées rate en général la partie contexte.
Comment structurer votre réponse
- Présentez les trois comme des données non fiables qui atteignent un contexte de confiance.
- Donnez la défense principale pour chacun en une ligne.
- Ajoutez une deuxième couche pour au moins l'un d'eux.
- Mentionnez là où les valeurs par défaut du framework vous protègent déjà.
Exemple de réponse
Je les vois comme une seule forme : une donnée venant d'un utilisateur finit quelque part où elle est interprétée. Pour SQL, l'interpréteur c'est la base, donc les requêtes paramétrées ou un query builder qui lie les valeurs règlent le problème complètement, et il n'y a aucune raison acceptable de concaténer une chaîne. Pour le XSS, l'interpréteur c'est le navigateur, et le point clé c'est que l'échappement dépend du contexte. React échappe les noeuds de texte pour vous, donc le risque se concentre dans les échappatoires : l'injection de HTML brut, les valeurs href qui pourraient être une URL javascript, et tout ce qui est écrit directement dans le DOM. Quand un produit a vraiment besoin de HTML utilisateur, comme un champ de texte riche, j'assainis avec une bibliothèque à liste blanche côté serveur et j'ajoute une CSP stricte en deuxième couche pour qu'un oubli ne se transforme pas automatiquement en prise de contrôle de compte. Le CSRF ne s'applique que quand le navigateur attache les identifiants tout seul, donc SameSite en Lax en tue la plus grande partie, et j'ajoute quand même un jeton par session sur tout ce qui change l'état. Les cookies passent en httpOnly et Secure par principe.
Vous passez cet entretien bientôt ? GhostPilot écoute votre appel en direct, repère la question dès qu'elle est posée et affiche une réponse structurée à l'écran en temps réel. Essayez-le lors de votre prochain entretien blanc, ou prenez un Session Pass à $29, sans abonnement, pour le jour J.
Voir comment ça marcheQuestions de relance à prévoir
- Où SameSite Lax vous laisse-t-il encore exposé ?
- Quelle est la différence entre un XSS stocké, réfléchi et basé sur le DOM ?
- Comment déploieriez-vous une Content Security Policy sur une application existante ?
Autres questions pour Développeur full stack
Votre recruteur posera sa propre version de celle-ci. Collez votre véritable fiche de poste dans le Question Predictor gratuit et obtenez les 20 questions que ce poste a le plus de chances de poser, avec ce que chacune cherche vraiment à sonder.
Prédire mes questions