Os três vêm de misturar entrada não confiável em um contexto confiável. Barre SQL injection com queries parametrizadas, nunca com concatenação de string. Barre XSS com codificação de saída sensível ao contexto, evitando injeção de HTML cru, sanitizando qualquer HTML que você precise renderizar, e com uma Content Security Policy estrita. Barre CSRF com cookies SameSite mais um token por sessão nas requisições que mudam estado, ou um header customizado que um formulário de outro site não consegue definir.
Por que os entrevistadores perguntam isso
Esses são os bugs que fazem produtos serem invadidos, então o entrevistador quer competência básica mais uma noção de defesa em profundidade. Ele está escutando se você nomeia o mecanismo em vez de uma biblioteca, se você sabe que CSRF só importa para autenticação baseada em cookie, e se você trata validação e codificação como trabalhos diferentes. Um candidato que diz que sanitiza toda entrada normalmente está esquecendo a parte do contexto.
Como estruturar sua resposta
- Enquadre os três como dado não confiável chegando a um contexto confiável.
- Dê a defesa principal de cada um em uma linha.
- Adicione uma segunda camada para pelo menos um deles.
- Cite onde os padrões do framework já te protegem.
Exemplo de resposta
Eu penso neles como um formato só: dado de um usuário termina em algum lugar onde ele é interpretado. No SQL, o interpretador é o banco, então queries parametrizadas ou um query builder que faz bind dos valores resolvem por completo, e não existe motivo aceitável para concatenar uma string. No XSS, o interpretador é o navegador, e o ponto principal é que escapar depende do contexto. O React escapa nós de texto por você, então o risco se concentra nas saídas de emergência: injeção de HTML cru, valores de href que poderiam ser uma URL javascript, e qualquer coisa escrita direto no DOM. Onde um produto genuinamente precisa de HTML do usuário, como um campo de texto rico, eu sanitizo com uma biblioteca de lista de permissões no servidor e adiciono uma CSP estrita como segunda camada, para uma escapada não virar automaticamente um sequestro de conta. O CSRF só se aplica quando o navegador anexa credenciais automaticamente, então SameSite em Lax mata a maior parte, e eu ainda adiciono um token por sessão em qualquer coisa que muda estado. Os cookies ganham httpOnly e Secure como praxe.
Vai encarar essa entrevista em breve? O GhostPilot escuta a sua chamada ao vivo, identifica a pergunta no instante em que ela é feita e coloca uma resposta estruturada na sua tela em tempo real. Teste na sua próxima entrevista simulada ou pegue um Session Pass de $29, sem assinatura, para a hora da verdade.
Veja como funcionaPerguntas de acompanhamento que você pode esperar
- Onde o SameSite Lax ainda te deixa exposto?
- Qual é a diferença entre XSS armazenado, refletido e baseado em DOM?
- Como você implantaria uma Content Security Policy em um app existente?
Mais perguntas para Desenvolvedor Full Stack
Seu entrevistador vai fazer a própria versão desta. Cole a descrição real da vaga no Question Predictor gratuito e receba as 20 perguntas que essa vaga tem mais chance de fazer, com o que cada uma está de fato sondando.
Prever minhas perguntas