Injeção de SQL

Uma injeção de SQL é uma forma de ataque cibernético que tem como alvo sites e aplicativos web vinculados a bancos de dados. Esses ataques exploram softwares de servidor de sites e bancos de dados mal configurados para induzir um servidor a analisar instruções SQL que, de outra forma, ele não executaria. Esses ataques podem revelar informações pessoais e financeiras confidenciais, permitir que um invasor altere ou exclua informações armazenadas em um banco de dados ou fornecer outro tipo de acesso não autorizado.

Um site fica vulnerável a uma injeção de SQL quando aceita a entrada do usuário de um formulário de texto e a inclui como parte de uma consulta SQL. Em vez de preencher o campo do formulário com as informações esperadas, como um nome de usuário, o invasor insere uma sequência de texto que modifica a consulta SQL. Por exemplo, uma consulta hipotética pode começar com SELECT UserID, Name, Password FROM Users WHERE UserID = , seguida pela entrada do campo de formulário de ID do usuário. Se o usuário inserir seu ID, a consulta funcionará conforme o esperado e exibirá suas informações.

Um invasor insere texto inesperado em uma instrução de consulta para modificá-la
Um invasor insere texto inesperado em uma instrução de consulta para modificá-la

No entanto, se o servidor inserir o texto de entrada na consulta sem restrições, um invasor poderá usá-lo para modificar a própria instrução de consulta SQL. Se, em vez de um ID de usuário, alguém inserir o texto 317 OR 1=1, a consulta se tornará SELECT UserID, Name, Password FROM Users WHERE UserID = 317 OR 1=1;. Como OR 1=1 sempre resulta em verdadeiro, ele substitui o ID do usuário; a consulta, em vez disso, retorna os IDs de usuário, nomes e senhas de todas as entradas na tabela Users. Outros tipos de injeção de código podem permitir que um invasor faça login como administrador do site, exclua registros ou tabelas de um banco de dados ou, em alguns casos extremos, insira e execute scripts de shell e outros códigos.

Um administrador de site pode impedir ataques de injeção de SQL mantendo o software do servidor atualizado. Também é importante "sanitizar" as entradas do banco de dados, restringindo o texto inserido ou filtrando determinados caracteres. Os administradores de sites também podem parametrizar suas consultas SQL, usando espaços reservados na consulta que façam referência à entrada do usuário em vez de inseri-la diretamente na consulta.

Atualizado March 20, 2023 por Brian P.

quizTeste seus conhecimentos

Which Unix command is used for searching text documents?

A
cd
0%
B
ls
0%
C
man
0%
D
grep
0%
Correct! Incorrect!     View the Grep definition.
More Quizzes →

O dicionário de informática Tech Terms

A definição de Injeção de SQL nesta página é uma definição original escrita pelos autores do TechTerms.com. Se você quiser fazer referência a esta página ou citar esta definição, use a barra de citação verde logo abaixo da definição.

Nosso objetivo é explicar a terminologia de informática de um jeito fácil de entender. Buscamos precisão e clareza em cada definição que publicamos. Se você tiver comentários sobre esta definição ou quiser sugerir um novo termo técnico, entre em contato.

A newsletter do Tech Terms

Amplie seus conhecimentos técnicos com nossa newsletter diária ou semanal! Assine hoje e receba novos termos e quizzes na sua caixa de entrada.

Assine a newsletter gratuita do TechTerms

Com que frequência você gostaria de receber um e-mail?

Você pode cancelar a assinatura ou alterar a frequência a qualquer momento usando os links disponíveis em cada e-mail. Dúvidas? Entre em contato.

Observação: a newsletter é enviada em inglês.