O documento discute PHP Injection e SQL Injection, duas técnicas de injeção de código que exploram vulnerabilidades em sites. PHP Injection permite rodar arquivos ".php" e obter acesso de administrador no servidor. SQL Injection usa falhas na camada do banco de dados para acessar dados sem login. O texto dá exemplos de como filtrar variáveis do usuário para prevenir esses ataques.
3. Consiste em injetar um código dentro de uma página ou
programa vulnerável, cuja linguagem de programação
é PHP, nesta falha o invasor poderá injetar arquivos
“*.php” para rodar comandos dentro do servidor ou ate
mesmo obter uma Shell direto do servidor, a falha pode
ser considerada comum pois PHP é uma linguagem de
fácil aprendizagem, então muitos programadores sem
experiência criam sistemas ou sites, e acabam
esquecendo da segurança do código, vamos mostrar
um pouco dessa “INSEGURANÇA” a seguir.
6. SQL Injection é uma técnica de injeção de código
que explora uma vulnerabilidade de segurança
localizada na camada de banco de dados
(database layer) da aplicação. Na prática é
utilizada por hackers (ou não) para ter acesso ao
banco de dados do site da vítima sem que ele
precise de um login ou uma senha efetivamente
para fazê-lo.
7. Para entendermos melhor como funcionam os
ataques via injeção de códigos SQL (SQL Injection),
vou utilizar um caso bem comum entre os
programadores para que vocês se familiarizem com
mais facilidade.
Pense em um formulário para login no sistema e
uma consulta na base de dados para verificar se
determinado usuário e senha existe em na base de
dados.
8.
9.
10.
11.
12.
13. Agora no campo senha vamos inserir o seguinte
conteúdo:
admin123’; DROP TABLE usuarios; --
Seria interpretado assim:
SELECT usuario,senha FROM usuarios WHERE usuario
= ‘admin’ AND senha=‘admin123’; DROP TABLE
usuarios; --’;
14. Primeiro: Separe sempre a exibição de erros em
2 ambientes, o ambiente de desenvolvimento e o
ambiente de produção. O ambiente de
desenvolvimento pode ter qualquer tipo de erro
emitido na tela, afinal, você precisa ver os erros
para tratá-los, no ambiente de produção omita
qualquer tipo de erro, qualquer erro pode ser uma
pista para o hacker descobrir detalhes sobre o seu
ambiente.
15. Hackers enviaram para o site MySQL.com em um determinado
formulário um comando que, se não for interpretado pelo site,
pode fornecer dados que antes eram sigilosos. E foi o que
aconteceu no caso das bases de dados do site, ironicamente
um dos criadores da base de dados de código aberto SQL.
O responsável pelo ataque publicou então todos os dados que
obteve, o que inclui não só nomes de bases de dados e seus
campos como também usuários e senhas criptografadas.
Pouco mais tarde, a base de dados do site Sun.com, que
comprou a empresa por trás da tecnologia MySQL, também foi
comprometida por meio do mesmo Hacker.
16. Segundo: Filtre todo o tipo de variável dados que
vem de urls ou inputs de formulário $_GET ou
$_POST para que nenhum dos dados imputados
pelo usuário possa ser interpretado como parte da
instrução SQL.