O documento discute SQL Injection, incluindo o que é, tipos, e como se proteger. SQL Injection ocorre quando queries maliciosas são inseridas através de aplicações web. Para se proteger, deve-se filtrar strings, usar prepared statements, e limitar privilégios de contas de banco de dados.
2. DISCLAIMER
The information contained in this document may be privileged
and confidential and protected from disclosure. If the reader of
this document is not the intended recipient, or an employee
agent responsible for delivering this document to the
intended recipient, you are hereby notified that any
dissemination, distribution or copying of this communication is
strictly prohibited.
4. Objetivos
• O que é SQL Injection?
• Tipos de SQL Injection
• Como se proteger?
• Conclusão
5. O que é SQL Injection?
É um ataque que consiste na inserção (conhecido como
injeção) de uma query via aplicação web.
Tais vulnerabilidades estão presentes em códigos.
Este é o caso da "SQL Injection", brecha através da qual
um invasor pode executar queries ou statements
arbitrários numa base relacional via "injeção" de
comandos em campos de formulários.
7. Como se proteger?
• Usando a função addslashes() tem o mesmo efeito que habilitar
magic quotes, porém só aplica onde for conveniente. O que ela faz
é colocar um caracter de escapa antes das aspas simples ou
dupla, antes da barra invertida e do caracter NULL.
• Usar 'prepared statements' ao invés do próprio código SQL
atribuíndo todas as outras medidas de prevenção usar esta, nos
daria mais performace e segurança, além de ser mais simples de
ler e escrever. Porem só pode ser usado em SELECT, INSERT,
UPDATE, REPLACE, DELETE e CREATE TABLE.
8. Como se proteger?
• $login = $_GET['login'] $query = "SELECT * FROM registos
WHERE login = '$login'";
• Ficaria assim:
• $query = "SELECT * FROM registos WHERE login = OR 1";
• Recomendo
Limitar Privilégios das contas com acesso ao DB. É importante manter
apenas os privilégios e acessos necessários. É comum muitas permissões
serem dadas para resolver problemas de funcionalidade, muito parecido ao
chmod 777 no linux.
9. Como se proteger?
• Verifique se todo parâmetro passado para o site é tratado
antes que seja concatenado na query. Por exemplo, nunca
faça simplesmente:
• // ASP
consulta = "DELETE FROM tabela WHERE id_tabela = " &
Request.Form("id")
• // PHP
$consulta = "DELETE FROM tabela WHERE id_tabela = " .
$_POST[id];
10. Como se proteger?
• Em vez disso, trate primeiro o Request.Form("id") ou $_POST[id], como neste
exemplo:
• //ASP
If IsNumeric(Request.Form("id")) Then
consulta = "DELETE FROM tabela WHERE id_tabela = " & Request.Form("id")
Else
Response.Write "Dados Inválidos"
Response.End
End If
11. Como se proteger?
• Em vez disso, trate primeiro o Request.Form("id") ou $_POST[id], como neste
exemplo:
• //PHP
if (is_numeric($_POST[id])) {
$consulta = "DELETE FROM tabela WHERE id_tabela = " . $_POST[id];
} else {
die("Dados inválidos");
}
12. Como se proteger?
• Para campos com strings é aconselhável checar pelos caracteres:
• " (aspas duplas)
• ' (aspas simples)
• (espaços)
• ; (ponto e vírgula)
• = (sinal de igual)
• < (sinal de menor que)
• > (sinal de maior que)
• ! (ponto de exclamação)
• -- (dois hifens, indica início de comentário em alguns bancos)
• # (sustenido ou jogo-da-velha, indica início de comentário em alguns bancos)
• // (duas barras, indica início de comentário em alguns bancos)
13. Como se proteger?
• Para campos com strings é aconselhável checar pelos caracteres:
• - SELECT - INSERT
• - UPDATE - DELETE
• - WHERE - JOIN
• - LEFT - INNER
• - NOT - IN
• - LIKE - TRUNCATE
• - DROP - CREATE
• - ALTER - DELIMITER
Objetivos
Explicar a importância do Princípio de Kerckhoff, Manejo de Chaves e Aleatoriedade.
Descrever a criptografia de chave pública, ataques de homem do meio e certificados.
Reconhecer as ameaças a SSL/TLS/HTTPS.
Aplicar HTTPS corretamente.
Especificação
6.1.1 Explicar a importância do Princípio de Kerckhoffs, do Gerenciamento de Chave e da Aleatoriedade.
Discutir o princípio de Kerckhoffs. Ver a seção 6 do workbook.
Explicar os termos de Criptografia
- Confidencialidade
- Integridade
- Autenticação
- Não Repúdio
- Assinatura Digital
Especificação
6.1.1 Explicar a importância do Princípio de Kerckhoffs, do Gerenciamento de Chave e da Aleatoriedade.
Discutir o princípio de Kerckhoffs. Ver a seção 6 do workbook.
Explicar os termos de Criptografia
- Confidencialidade
- Integridade
- Autenticação
- Não Repúdio
- Assinatura Digital
Especificação
6.1.1 Explicar a importância do Princípio de Kerckhoffs, do Gerenciamento de Chave e da Aleatoriedade.
Discutir o princípio de Kerckhoffs. Ver a seção 6 do workbook.
Explicar os termos de Criptografia
- Confidencialidade
- Integridade
- Autenticação
- Não Repúdio
- Assinatura Digital
Especificação
6.1.1 Explicar a importância do Princípio de Kerckhoffs, do Gerenciamento de Chave e da Aleatoriedade.
Discutir o princípio de Kerckhoffs. Ver a seção 6 do workbook.
Explicar os termos de Criptografia
- Confidencialidade
- Integridade
- Autenticação
- Não Repúdio
- Assinatura Digital
Especificação
6.1.1 Explicar a importância do Princípio de Kerckhoffs, do Gerenciamento de Chave e da Aleatoriedade.
Discutir o princípio de Kerckhoffs. Ver a seção 6 do workbook.
Explicar os termos de Criptografia
- Confidencialidade
- Integridade
- Autenticação
- Não Repúdio
- Assinatura Digital
Especificação
6.1.1 Explicar a importância do Princípio de Kerckhoffs, do Gerenciamento de Chave e da Aleatoriedade.
Discutir o princípio de Kerckhoffs. Ver a seção 6 do workbook.
Explicar os termos de Criptografia
- Confidencialidade
- Integridade
- Autenticação
- Não Repúdio
- Assinatura Digital
Especificação
6.1.1 Explicar a importância do Princípio de Kerckhoffs, do Gerenciamento de Chave e da Aleatoriedade.
Discutir o princípio de Kerckhoffs. Ver a seção 6 do workbook.
Explicar os termos de Criptografia
- Confidencialidade
- Integridade
- Autenticação
- Não Repúdio
- Assinatura Digital
Especificação
6.1.1 Explicar a importância do Princípio de Kerckhoffs, do Gerenciamento de Chave e da Aleatoriedade.
Discutir o princípio de Kerckhoffs. Ver a seção 6 do workbook.
Explicar os termos de Criptografia
- Confidencialidade
- Integridade
- Autenticação
- Não Repúdio
- Assinatura Digital
Especificação
6.1.1 Explicar a importância do Princípio de Kerckhoffs, do Gerenciamento de Chave e da Aleatoriedade.
Discutir o princípio de Kerckhoffs. Ver a seção 6 do workbook.
Explicar os termos de Criptografia
- Confidencialidade
- Integridade
- Autenticação
- Não Repúdio
- Assinatura Digital
Especificação
6.1.1 Explicar a importância do Princípio de Kerckhoffs, do Gerenciamento de Chave e da Aleatoriedade.
Discutir o princípio de Kerckhoffs. Ver a seção 6 do workbook.
Explicar os termos de Criptografia
- Confidencialidade
- Integridade
- Autenticação
- Não Repúdio
- Assinatura Digital