SQL Injection

Felipe Nathan Welter Vitor Emanuel Batista ECP381

SQL – Structured Query Language • Largamente utilizado em aplicações web que necessitam guardar informações como usuários. • Ameaças de segurança que se aproveitam de falhas com bases de dados via SQL estão sujeitas. documentos e etc. .

• O ataque pode envolver uma mudança na consulta SQL original.Como ocorre? • A injeção de SQL ocorre quando o atacante consegue inserir uma série de instruções SQL dentro de uma consulta (query) através da manipulação das entrada de dados de uma aplicação. .

DROP TABLE Select * from alunos where codigo = ' ' Select * from alunos where codigo = ' '.' .and senha= ' ' . drop table alunos -.WHERE Select * from login where usuario= ' ' and senha= ' ' Select * from login where usuario= ' ' or 'c'='c' -.Usar UNION Select * from projetos where codigo = ' ' Select * from projetos where codigo= ' ' UNION Select * from projetos -.Tipos • Manipulação SQL Modificar a query original incluindo novas queries: .' .

Microsoft OLE DB Provider for ODBC Drivers error '80040e14' [Microsoft] [ODBC SQL Server Driver] [SQL Server] Column 'usuarios. . O erro pode revelar nomes de tabelas ou colunas. Microsoft OLE DB Provider for SQL Server (0x8002F09) Error converting nvarchar value 'CartaoCredito' to a column of data type int.Tipos • Erros SQL Inserindo uma lógica errada na query é possível capturar informações pelo erro.codigo' is invalid in the select list because it is not contained in an aggregate function and there is no GROUP BY clause.

Select * from tabela where codigo = ' ' and senha = ' ' Select * from tabela where codigo = ' '. .Tipos • Chamada de funções Um ataque pode afetar banco de dados ou sistemas operacionais utilizando funções no SQL. -. shutdown with nowait.' and senha = ' ' A cláusula SHUTDOWN WITH NO WAIT no SQL possibilita o fechamento do serviço no sistema operacional.

Como evitar? Valide SEMPRE todo e qualquer tipo de dado que seu projeto for receber. . seja via formulário (POST) ou via query string (GET).

Se o campo usuário tem tamanho 10. não permitindo que mensagens de erro exponham informações sobre a estrutura dos dados. Limitar a entrada de texto para o usuário no formulário de entrada de dados. .Como evitar? Estabelecer uma política de segurança rígida e criteriosa limitando o acesso dos seus usuários. só permitir a digitação de 10 caracteres. Tratamento adequado dos erros.

Como evitar? Criar um log para auditoria dos erros ocorridos e das operações mais importantes da aplicação. formato e intervalo. Nunca construir instruções SQL ou Transact-SQL diretamente da entrada do usuário. . comprimento. Validar as entradas de usuário testando tipo.

Como evitar? Criptografia de dados: pode usar MD5. Validação de entrada de dados no formulário. desconsiderando caracteres como (‘). . drop. (--) e (. sendo que os dois primeiros são de “mão única” e não podem ser revertidos ao estado anterior. SHA1 ou BASE64. delete ou xp.) e palavras como insert.

olha só vou colocar uma \' e uma \" aqui no meu texto e vai dar um erro por causa das \" \'. olha só vou colocar uma ' e uma " aqui no meu texto e vai dar um erro por causa das " '..Como evitar? addslashes() Combinar addslashes() ao receber os dados: o comando adiciona uma barra ‘\’ antes de qualquer caracter que possa gerar erro SQL.. ...

Como evitar? mysql_real_escape_string() Usar mysql_real_escape_string() ao receber os dados. faz “escapar” os caracteres especiais. $senha = strip_tags($_POST['senha']). strip_tags() Usar strip_tags() – retira todas as tags HTML e PHP dos dados fornecidos. . $senha = mysql_real_escape_string($_POST['senha']). $usuario = mysql_real_escape_string($_POST['usuario']). $usuario = strip_tags($_POST['usuario']).

.Como evitar? Combinar diversas funções em uma só função muito mais abrangente.

com.com.htm http://www.br/sql-injection-o-que-e-e-como-evitar/ http://www.br/topic/327892-sql-injection-como-evitar/ http://phpbrasil.macoratti.com/docs/54734137/SQL-INJECTION http://pt.wikipedia.63275 http://www.macoratti.docstoc.net/sql_inj.com.net/sql_inj.php?1.com/phorum/read.br/sys/materias/267/1/Evitando-SQL-Injection http://srcware.zoomdigital.imasters.htm http://www.Referências http://www.com/programacao/como-evitar-sql-injection-em-net/ http://forum.org/wiki/Inje%C3%A7%C3%A3o_de_SQL .plugmasters.

Sign up to vote on this title
UsefulNot useful