ANÚNCIO

~/questoes/programacao

Qual é a vantagem de usar Prisma para prevenir SQL injection em API Routes?

Responda, confira o feedback e use o resultado para orientar sua revisão.
Aula de referência Projeto fullstack com Next.js para iniciantes
Para fixar

Prevenção de SQL Injection com Prisma em API Routes

Conceito central

SQL injection é um ataque que insere código malicioso em queries de banco de dados através de inputs não validados. O Prisma protege contra isso automaticamente usando prepared statements e validação de dados, tornando suas API Routes muito mais seguras.

Por que essa resposta faz sentido

Prisma usa prepared statements, que separam a estrutura da query dos dados do usuário, impossibilitando que código malicioso seja executado. Além disso, valida automaticamente os tipos de dados, garantindo que apenas informações esperadas cheguem ao banco de dados.

Armadilhas comuns

  • Confundir segurança de banco de dados com segurança de autenticação: Prisma protege queries, não credenciais de acesso.
  • Achar que Prisma substitui boas práticas de validação frontend: sempre valide inputs no cliente também, mas confie no Prisma para proteção no backend.
  • Pensar que prepared statements são apenas uma feature do Prisma: na verdade, é um padrão universal de segurança em bancos de dados, e Prisma o implementa automaticamente.

Entenda as alternativas

A

Prisma não bloqueia o acesso ao banco de dados completamente. Na verdade, ele facilita o acesso seguro através de uma interface mais simples e protegida. O objetivo é permitir queries seguras, não proibir todas as operações.

B

Prisma não exige certificados digitais para acessar o banco de dados. A segurança dele vem de técnicas de programação (prepared statements), não de autenticação por certificados. Além disso, essa seria uma restrição muito severa e impraticável.

C

Embora seja boa prática criptografar senhas, Prisma não faz isso automaticamente. Essa responsabilidade é sua ao usar bibliotecas como bcrypt. Prisma é um ORM que gerencia queries, não um gerenciador de criptografia.

D

Essa é a resposta correta. Prisma implementa prepared statements (queries pré-compiladas) que garantem que dados do usuário nunca são interpretados como código. A validação automática de tipos adiciona uma camada extra de proteção contra dados malformados.

Dica prática: Ao usar Prisma em suas API Routes, você pode escrever queries de forma natural sem se preocupar com escapar caracteres especiais. Por exemplo: `prisma.user.findUnique({ where: { email: userInput } })` já está segura contra SQL injection, diferentemente de concatenar strings em SQL puro.

Revise pensando: Se alguém tentar passar `'; DROP TABLE users; --` como email em uma query Prisma, o que acontecerá com essa informação?