SlideShare ist ein Scribd-Unternehmen logo
1 von 55
Segurança em PHP: o
que você precisa saber
Jota Júnior
Tolos ignoram complexidade, enquanto
pragmáticos sofrem com ela. Alguns até
conseguem evitar.
Gênios a removem.
Epigrams in Programming(http://www.cs.yale.edu/quotes.html)
Há duas formas de escrever programas sem erros;
só a terceira realmente funciona.
Epigrams in Programming(http://www.cs.yale.edu/quotes.html)
“Não confie em
estranhos.”
Sua mãe
Sempre haverá um
“ZzboladozZ”
Acreditem, já vi este nick! Ele se dizia “ráquer”
Vamos lá!
• OWASP
• SQL Injection
• XSS
• CSRF
• File Upload
• Path Traversal
Vamos lá!
• OWASP
• SQL Injection
• XSS
• CSRF
• File Upload
• Path Traversal
Uma boa fonte é mais importante do
que uma boa memória.
https://www.owasp.org/index.php/PHP_Security_Cheat_Sheet
https://www.owasp.org/
Vamos lá!
• OWASP
• SQL Injection
• XSS
• CSRF
• File Upload
• Path Traversal
SQL Injection
Um dado proveniente do usuário nunca
pode virar código diretamente.
SQL Injection
SQL Injection
SQL Injection
Existe o jeito complexo e o jeito
certo. A escolha é sua.
SQL Injection
E quando a query é dinâmica, ou existe
alguma limitação para os prepared
statements?
SQL Injection
SQL Injection
Vamos lá!
• OWASP
• SQL Injection
• XSS
• CSRF
• File Upload
• Path Traversal
XSS
Cross-Site Scripting
- Permite inserir código que persiste na
página
- Usuário pode inserir código malicioso e
tornar seus outros usuários vítimas
XSS
<embed
src="http://www.orkut.com.br/GLogin.aspx
?cmd=logout"&gt;
XSS
Retirado do site da OWASP
Simples como essa função.
http://br2.php.net/htmlspecialchars
XSS
Novamente, várias ferramentas prontas
para facilitar.
Exemplo do framework CodeIgniter
(http://ellislab.com/codeigniter/user-guide/libraries/input.html)
Vamos lá!
• OWASP
• SQL Injection
• XSS
• CSRF
• File Upload
• Path Traversal
CSRF
Chega de proteger o sistema.
Proteja também seu usuário.
CSRF
Cross Site Request Forgery
Permite forjar requisições, levando seu
usuário
a executar ações indesejadas.
CSRF
Como?
<a
href=”http://bancoruim.com/usuario/transferir/jota/1000”>
Download
</a>
CSRF
Você tem um controller que modifica determinado
dado quando requisitado.
Como saber que é uma requisição legítima?
CSRF
1- Crie um token aleatório e complexo, como chave de
segurança, provavelmente na hora da autenticação.
CSRF
2- Armazene este token também em uma sessão (ou
outra fonte de dados persistente similar, não acessível
ao usuário).
CSRF
3- Ao executar qualquer ação dentro do site, como
submeter um formulário em AJAX, envie também o
token (que pode estar guardado em um hidden input).
CSRF
4- Ao receber alguma requisição, verifique se o token
foi enviado e, caso tenha sido, se é igual ao
armazenado em sessão. Se não, negue.
CSRF
Outras considerações:
Complicações podem existir caso o token seja
previsível ou acessível (normalmente se existe outra
falha associada, como do navegador ou de sessão).
CSRF
Como o Facebook trata CSRF no PHP SDK:
https://github.com/facebook/facebook-php-sdk/blob/master/src/base_facebook.php
Passo 1 e 2: Cria token e guarda em sessão
CSRF
Passo 3: Envia o token estabelecido para a requisição
CSRF
Passo 4: Ao receber a requisição, verifica se o código
enviado é o mesmo da sessão
Vamos lá!
• OWASP
• SQL Injection
• XSS
• CSRF
• File Upload
• Path Traversal
File Upload
Aquele upload de imagens inofensivo pode se tornar
uma grande dor de cabeça.
File Upload
Alguns dados, aparentemente confiáveis, podem ser
maliciosamente manipulados.
Entre eles, estão os cabeçalhos HTTP.
File Upload
Confira, sempre.
File Upload
Uma forma de verificar a imagem é verificando a
extensão
e o MIME-Type.
File Upload
A extensão é bem simples.
File Upload
O índice type do $_FILES traz o MIME-Type do arquivo,
mas o que ele diz ter. É manipulável e, portanto,
não pode ser utilizado.
File Upload
Código retirado do site da OWASP
Gasta mais recursos, mas faz uma verificação muito mai
confiável, pois obtém o real MIME-Type.
File Upload
Outras considerações:
- GIFs são do mal. Quando possível, não
aceite;
- O velho getimagesize(); é burlável
(por GIFs, inclusive!)
Vamos lá!
• OWASP
• SQL Injection
• XSS
• CSRF
• File Upload
• Path Traversal
Path Traversal
Imponha limites.
Path Traversal
Você recebe o caminho de um arquivo, e executa
alguma ação com isso.
http://www.site.com/download.php?arquivo=carro.jpg
Path Traversal
O que você recebe como parâmetro está em um
diretório específico, construído para esse fim.
Path Traversal
Mas eis que surge o “ZzboladozZ”...
http://www.site.com/download.php?arquivo=../../../../etc/shado
w
Path Traversal
É necessário impor limites, não deixar que o usuário
vá a qualquer lugar do sistema. Ele só pode inserir o
nome do arquivo, e não um caminho.
Path Traversal
Simplesmente não.
Path Traversal
Simples como isso, sem REGEX.
Dessa forma, ../../../anything vira só anything, e
nenhum arquivo indevido é acessado.
Path Traversal
1. Quando possível, pode usar identificadores
numéricos para os arquivos, e não caminhos.
Path Traversal
Não funciona para poucos casos, como arquivos Phar.
E realpath requer que o caminho exista (caso não
exista, retorna falso).
2. Caso queira que sejam permitidos diretórios no
caminho, mas só “abaixo”, pode usar o
Obrigado :-)

Weitere ähnliche Inhalte

Ähnlich wie Segurança PHP: O guia definitivo para SQL Injection, XSS, CSRF e mais

Qualitypress - Segurança em Aplicações Web com PHP
Qualitypress - Segurança em Aplicações Web com PHPQualitypress - Segurança em Aplicações Web com PHP
Qualitypress - Segurança em Aplicações Web com PHPQuality Press
 
Segurança em Aplicativos Web
Segurança em Aplicativos WebSegurança em Aplicativos Web
Segurança em Aplicativos WebSergio Henrique
 
AppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEE
AppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEEAppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEE
AppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEEMagno Logan
 
FIEB - WebVibe - Desenvolvimento Seguro de Aplicações WEB
FIEB - WebVibe - Desenvolvimento Seguro de Aplicações WEBFIEB - WebVibe - Desenvolvimento Seguro de Aplicações WEB
FIEB - WebVibe - Desenvolvimento Seguro de Aplicações WEBErick Belluci Tedeschi
 
Introducao WAF Tchelinux 2012
Introducao WAF Tchelinux 2012Introducao WAF Tchelinux 2012
Introducao WAF Tchelinux 2012Jeronimo Zucco
 
Palestra em parceria com o @cefet_rj – Auditoria Teste de Invasão em Aplicações
Palestra em parceria com o @cefet_rj – Auditoria Teste de Invasão em AplicaçõesPalestra em parceria com o @cefet_rj – Auditoria Teste de Invasão em Aplicações
Palestra em parceria com o @cefet_rj – Auditoria Teste de Invasão em AplicaçõesClavis Segurança da Informação
 
Fisl 16 - Nem tudo o que reluz é ouro. hackeando as principais dicas de dese...
Fisl 16 - Nem tudo o que reluz é ouro. hackeando as principais dicas de dese...Fisl 16 - Nem tudo o que reluz é ouro. hackeando as principais dicas de dese...
Fisl 16 - Nem tudo o que reluz é ouro. hackeando as principais dicas de dese...As Zone
 
Fisl 16 – Nem tudo o que reluz é ouro. hackeando as principais dicas de desen...
Fisl 16 – Nem tudo o que reluz é ouro. hackeando as principais dicas de desen...Fisl 16 – Nem tudo o que reluz é ouro. hackeando as principais dicas de desen...
Fisl 16 – Nem tudo o que reluz é ouro. hackeando as principais dicas de desen...Thiago Dieb
 
Construindo uma Aplicação PHP à Prova de Balas - 2010
Construindo uma Aplicação PHP à Prova de Balas - 2010Construindo uma Aplicação PHP à Prova de Balas - 2010
Construindo uma Aplicação PHP à Prova de Balas - 2010Rafael Jaques
 
Trabalho de Auditoria e Segurança - Gloogle Hacking
Trabalho de Auditoria e Segurança - Gloogle HackingTrabalho de Auditoria e Segurança - Gloogle Hacking
Trabalho de Auditoria e Segurança - Gloogle HackingAndré Valbert de Jesus Alves
 
Desenvolvendo sistemas seguros com PHP
Desenvolvendo sistemas seguros com PHPDesenvolvendo sistemas seguros com PHP
Desenvolvendo sistemas seguros com PHPFlavio Souza
 
Teste de Segurança: Vulnerabilidade de Aplicações Web
Teste de Segurança: Vulnerabilidade de Aplicações WebTeste de Segurança: Vulnerabilidade de Aplicações Web
Teste de Segurança: Vulnerabilidade de Aplicações WebMarcio Roberto de Souza Godoi
 
Tutorial: Principais Vulnerabilidades em Aplicações Web – Rafael Soares Ferre...
Tutorial: Principais Vulnerabilidades em Aplicações Web – Rafael Soares Ferre...Tutorial: Principais Vulnerabilidades em Aplicações Web – Rafael Soares Ferre...
Tutorial: Principais Vulnerabilidades em Aplicações Web – Rafael Soares Ferre...Clavis Segurança da Informação
 
Segurança em PHP - Blinde seu código de você mesmo!
Segurança em PHP - Blinde seu código de você mesmo!Segurança em PHP - Blinde seu código de você mesmo!
Segurança em PHP - Blinde seu código de você mesmo!Gustavo Neves
 
Bypass de token csrf na pratica secure brasil
Bypass de token csrf na pratica secure brasilBypass de token csrf na pratica secure brasil
Bypass de token csrf na pratica secure brasilWilliam Costa
 
Segurança & Ruby on Rails
Segurança & Ruby on RailsSegurança & Ruby on Rails
Segurança & Ruby on RailsJulio Monteiro
 

Ähnlich wie Segurança PHP: O guia definitivo para SQL Injection, XSS, CSRF e mais (20)

Qualitypress - Segurança em Aplicações Web com PHP
Qualitypress - Segurança em Aplicações Web com PHPQualitypress - Segurança em Aplicações Web com PHP
Qualitypress - Segurança em Aplicações Web com PHP
 
Segurança em Aplicativos Web
Segurança em Aplicativos WebSegurança em Aplicativos Web
Segurança em Aplicativos Web
 
Segurança Web: O MMA da Tecnologia
Segurança Web: O MMA da TecnologiaSegurança Web: O MMA da Tecnologia
Segurança Web: O MMA da Tecnologia
 
AppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEE
AppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEEAppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEE
AppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEE
 
FIEB - WebVibe - Desenvolvimento Seguro de Aplicações WEB
FIEB - WebVibe - Desenvolvimento Seguro de Aplicações WEBFIEB - WebVibe - Desenvolvimento Seguro de Aplicações WEB
FIEB - WebVibe - Desenvolvimento Seguro de Aplicações WEB
 
Sql injection
Sql injectionSql injection
Sql injection
 
Introducao WAF Tchelinux 2012
Introducao WAF Tchelinux 2012Introducao WAF Tchelinux 2012
Introducao WAF Tchelinux 2012
 
Palestra em parceria com o @cefet_rj – Auditoria Teste de Invasão em Aplicações
Palestra em parceria com o @cefet_rj – Auditoria Teste de Invasão em AplicaçõesPalestra em parceria com o @cefet_rj – Auditoria Teste de Invasão em Aplicações
Palestra em parceria com o @cefet_rj – Auditoria Teste de Invasão em Aplicações
 
Fisl 16 - Nem tudo o que reluz é ouro. hackeando as principais dicas de dese...
Fisl 16 - Nem tudo o que reluz é ouro. hackeando as principais dicas de dese...Fisl 16 - Nem tudo o que reluz é ouro. hackeando as principais dicas de dese...
Fisl 16 - Nem tudo o que reluz é ouro. hackeando as principais dicas de dese...
 
Fisl 16 – Nem tudo o que reluz é ouro. hackeando as principais dicas de desen...
Fisl 16 – Nem tudo o que reluz é ouro. hackeando as principais dicas de desen...Fisl 16 – Nem tudo o que reluz é ouro. hackeando as principais dicas de desen...
Fisl 16 – Nem tudo o que reluz é ouro. hackeando as principais dicas de desen...
 
Construindo uma Aplicação PHP à Prova de Balas - 2010
Construindo uma Aplicação PHP à Prova de Balas - 2010Construindo uma Aplicação PHP à Prova de Balas - 2010
Construindo uma Aplicação PHP à Prova de Balas - 2010
 
Trabalho de Auditoria e Segurança - Gloogle Hacking
Trabalho de Auditoria e Segurança - Gloogle HackingTrabalho de Auditoria e Segurança - Gloogle Hacking
Trabalho de Auditoria e Segurança - Gloogle Hacking
 
Segurança em PHP
Segurança em PHPSegurança em PHP
Segurança em PHP
 
Desenvolvendo sistemas seguros com PHP
Desenvolvendo sistemas seguros com PHPDesenvolvendo sistemas seguros com PHP
Desenvolvendo sistemas seguros com PHP
 
Teste de Segurança: Vulnerabilidade de Aplicações Web
Teste de Segurança: Vulnerabilidade de Aplicações WebTeste de Segurança: Vulnerabilidade de Aplicações Web
Teste de Segurança: Vulnerabilidade de Aplicações Web
 
Tutorial: Principais Vulnerabilidades em Aplicações Web – Rafael Soares Ferre...
Tutorial: Principais Vulnerabilidades em Aplicações Web – Rafael Soares Ferre...Tutorial: Principais Vulnerabilidades em Aplicações Web – Rafael Soares Ferre...
Tutorial: Principais Vulnerabilidades em Aplicações Web – Rafael Soares Ferre...
 
Segurança em PHP - Blinde seu código de você mesmo!
Segurança em PHP - Blinde seu código de você mesmo!Segurança em PHP - Blinde seu código de você mesmo!
Segurança em PHP - Blinde seu código de você mesmo!
 
Bypass de token csrf na pratica secure brasil
Bypass de token csrf na pratica secure brasilBypass de token csrf na pratica secure brasil
Bypass de token csrf na pratica secure brasil
 
Segurança & Ruby on Rails
Segurança & Ruby on RailsSegurança & Ruby on Rails
Segurança & Ruby on Rails
 
Teste de segurança do lado servidor - Nível 1
Teste de segurança do lado servidor - Nível 1Teste de segurança do lado servidor - Nível 1
Teste de segurança do lado servidor - Nível 1
 

Segurança PHP: O guia definitivo para SQL Injection, XSS, CSRF e mais