SlideShare uma empresa Scribd logo
1 de 20
Segurança em aplicações web com PHP
Segurança em aplicações web
com PHP
Rafael Cordeiro
16/08/2013
Segurança em aplicações web com PHP
Dicas para tornar seu site menos vulnerável...
 Assunto em evidência;
 Conhecimento das principais ameaças;
 Conhecimento das técnicas que ajudam a evita-las;
 Garantir a segurança de um sistema não é fácil;
 Dicas incomuns que podem trazer um pouco mais de segurança;
Segurança em aplicações web com PHP
• Spoofing de formulário ocorre quando alguém faz uma postagem em um de seus
formulários de algum local inesperado;
• Uma técnica muito útil contra esse tipo de ataque é o uso de um token;
Evitando Spoofing de formulário!
Segurança em aplicações web com PHP
• Todo dado externo a sua aplicação (GET, POST, COOKIE, SERVER), pode ser
manipulado e merecem sua desconfiança e consequente validação.
Sempre valide dados externos!
Segurança em aplicações web com PHP
• Defina um nome para o cookie de sessão, nomes comuns facilitam o seu roubo,
também conhecido como session hijacking, PHPSESSID é o nome padrão usado
pelo PHP para guardar ids de sessão.
Mude o nome do cookie de sessão!
Segurança em aplicações web com PHP
• Ids de sessão devem ser armazenados em cookies, essa é uma regra básica que
já vem como padrão na configuração do PHP, algo que não vem como padrão é
o atributo session.cookie_httponly, que garante que os cookies de sessão só
possam ser acessados via http, não podendo ser lidos por Javascript por
exemplo, com isso estamos evitando ataques como XSS.
Cookies de sessão só devem ser acessados via HTTP
Segurança em aplicações web com PHP
• Mesmo que os hackers consiga acessar seu sistema roubando uma sessão, eles
terão pouco tempo de ação.
Limite o tempo de vida das sessões
Segurança em aplicações web com PHP
• Valide a cada página o User Agent e o ip do dono da sessão, isso garante que o
usuário que efetuou o login é o mesmo que está acessando a página atual.
Valide a cada página a origem da sessão.
Segurança em aplicações web com PHP
• Em caso de mais de três tentativas de senha incorreta, bloqueie o IP de origem,
ou adicione um Captcha como validação adicional, isso dificulta ataques de
força bruta.
Monitore os erros de senha
Segurança em aplicações web com PHP
• Restrinja o acesso às pastas do servidor, ou seja, permissões de execução e
escrita somente em pastas apropriadas.
Permissões em pastas
Segurança em aplicações web com PHP
• Senhas não devem ser armazenadas sem “cifragem”, sempre armazene senhas
criptografadas, assim estaremos protegendo também nossos usuários, numa
eventual invasão ao banco de dados.
Não armazene senhas em texto puro.
Segurança em aplicações web com PHP
• Sempre valide os arquivos antes de salvar no servidor, isso evita subir arquivos
que possam ser executados e consequentemente trazer algum dano ao seu
sistema.
Uploads de arquivos
Segurança em aplicações web com PHP
• Dados de configuração de sistemas em arquivos com extensões ini, XML, JSON,
txt e etc.
• Podemos colocar esses arquivos fora da pasta public_html ou adicionar um
arquivo .htaccess com o código a seguir, nas pastas que queremos proteger.
Proteja pastas contra acessos HTTP
Segurança em aplicações web com PHP
• Controle as exceções e erros ocorridos eventualmente no seu sistema.
• Evite exibir dados sobre sua aplicação definindo um arquivo de log para
registrar esses erros. Caso precise acompanhar as informações do arquivo de log
em tempo real, acesse o servidor via SSH e use o comando tail -f pathlog/logfile.
Controle de erros
Segurança em aplicações web com PHP
• Há uma variedade de problemas de segurança que surgem quando se utiliza
soluções de hospedagem compartilhada.
• No passado, PHP tentou resolver alguns destes problemas com a diretiva
safe_mode. No entanto, como o manual do PHP afirma, “é arquitetonicamente
incorreto tentar resolver esse problema no nível do PHP. “ Assim, safe_mode não
estará mais disponível a partir do PHP 6. Ainda assim, há três diretivas do php.ini
que continuam a ser importantes em uma hospedagem compartilhada:
open_basedir, disable_functions e disable_classes. estas diretivas não depende
de safe_mode, e eles permanecerão disponíveis para as versões futuras.
Servidores compartilhados
Segurança em aplicações web com PHP
• open_basedir – Com essa diretiva é possível limitar os diretórios que o PHP
pode abrir com por exemplo fopen ou include.
Servidores compartilhados
Segurança em aplicações web com PHP
• disable_functions e disable_classes – Os disable_functions e
disable_classes funcionam de forma semelhante, permitindo que você possa
desabilitar certas funções nativas do PHP e classes por razões de segurança.
Servidores compartilhados
Segurança em aplicações web com PHP
• Se for descoberto que seu sistema foi comprometido, investigue e descubra a
falha explorada e principalmente desabilite as contas e defina uma estratégia de
ativação utilizando e-mails.
Desabilite as contas
Segurança em aplicações web com PHP
• Use programas de identificação de vulnerabilidade, eles permitem identificar,
oferecer informações sobre elas e ainda orienta como resolve-las.
Inspecione o seu sistema
Segurança em aplicações web com PHP
• Duas dicas de software que ajuda na exploração e resolução de falhas de
segurança em sistemas web.
• Software de exploração de vulnerabilidade:
http://www.getmantra.com
• Software de scan de aplicações web:
http://www.mavitunasecurity.com/communityedition
Programas de teste de vulnerabilidade

Mais conteúdo relacionado

Mais procurados

Gerenciando sites em WordPress de forma eficiente: do deploy à manutenção
Gerenciando sites em WordPress de forma eficiente: do deploy à manutençãoGerenciando sites em WordPress de forma eficiente: do deploy à manutenção
Gerenciando sites em WordPress de forma eficiente: do deploy à manutençãospirallab
 
Linux4security
Linux4securityLinux4security
Linux4securityDaniel
 
Como Limpar Seu Site WordPress
Como Limpar Seu Site WordPressComo Limpar Seu Site WordPress
Como Limpar Seu Site WordPressSucuri
 
Top Plugins de Segurança para WordPress
Top Plugins de Segurança para WordPressTop Plugins de Segurança para WordPress
Top Plugins de Segurança para WordPressTales Augusto
 
Comet - ReverseAjax com DWR - Resumo
Comet - ReverseAjax com DWR - ResumoComet - ReverseAjax com DWR - Resumo
Comet - ReverseAjax com DWR - ResumoHanderson Frota
 
Segurança de Redes
Segurança de RedesSegurança de Redes
Segurança de RedesCassio Ramos
 
PHP 5 de Forma Correta e Segura
PHP 5 de Forma Correta e SeguraPHP 5 de Forma Correta e Segura
PHP 5 de Forma Correta e SeguraKleber Silva
 
Jéssica
JéssicaJéssica
JéssicaTurma8B
 
Blindando aplicações com CMS Joomla!
Blindando aplicações com CMS Joomla!Blindando aplicações com CMS Joomla!
Blindando aplicações com CMS Joomla!Júlio Coutinho
 
Fisl 16 - WordPress vs Hacker - Descubra o que ainda é preciso saber para bl...
Fisl 16 - WordPress vs Hacker - Descubra o que ainda é preciso saber para bl...Fisl 16 - WordPress vs Hacker - Descubra o que ainda é preciso saber para bl...
Fisl 16 - WordPress vs Hacker - Descubra o que ainda é preciso saber para bl...As Zone
 
Modulo 7 Seguranca
Modulo 7   SegurancaModulo 7   Seguranca
Modulo 7 SegurancaWalter Cunha
 
Segurança PHP - por Samyr Abdo
Segurança PHP - por Samyr AbdoSegurança PHP - por Samyr Abdo
Segurança PHP - por Samyr AbdoSamyr Abdo
 

Mais procurados (20)

Gerenciando sites em WordPress de forma eficiente: do deploy à manutenção
Gerenciando sites em WordPress de forma eficiente: do deploy à manutençãoGerenciando sites em WordPress de forma eficiente: do deploy à manutenção
Gerenciando sites em WordPress de forma eficiente: do deploy à manutenção
 
Conceitos de Ajax
Conceitos de AjaxConceitos de Ajax
Conceitos de Ajax
 
Linux4security
Linux4securityLinux4security
Linux4security
 
Dwrsecomp
DwrsecompDwrsecomp
Dwrsecomp
 
Reverse Ajax Dwr
Reverse Ajax DwrReverse Ajax Dwr
Reverse Ajax Dwr
 
Hardening
HardeningHardening
Hardening
 
Como Limpar Seu Site WordPress
Como Limpar Seu Site WordPressComo Limpar Seu Site WordPress
Como Limpar Seu Site WordPress
 
Top Plugins de Segurança para WordPress
Top Plugins de Segurança para WordPressTop Plugins de Segurança para WordPress
Top Plugins de Segurança para WordPress
 
Comet - ReverseAjax com DWR - Resumo
Comet - ReverseAjax com DWR - ResumoComet - ReverseAjax com DWR - Resumo
Comet - ReverseAjax com DWR - Resumo
 
Segurança de Redes
Segurança de RedesSegurança de Redes
Segurança de Redes
 
PHP 5 de Forma Correta e Segura
PHP 5 de Forma Correta e SeguraPHP 5 de Forma Correta e Segura
PHP 5 de Forma Correta e Segura
 
Segurança em PHP
Segurança em PHPSegurança em PHP
Segurança em PHP
 
Jéssica
JéssicaJéssica
Jéssica
 
Blindando aplicações com CMS Joomla!
Blindando aplicações com CMS Joomla!Blindando aplicações com CMS Joomla!
Blindando aplicações com CMS Joomla!
 
PHP FrameWARks - CakePHP
PHP FrameWARks - CakePHPPHP FrameWARks - CakePHP
PHP FrameWARks - CakePHP
 
Fisl 16 - WordPress vs Hacker - Descubra o que ainda é preciso saber para bl...
Fisl 16 - WordPress vs Hacker - Descubra o que ainda é preciso saber para bl...Fisl 16 - WordPress vs Hacker - Descubra o que ainda é preciso saber para bl...
Fisl 16 - WordPress vs Hacker - Descubra o que ainda é preciso saber para bl...
 
Modulo 7 Seguranca
Modulo 7   SegurancaModulo 7   Seguranca
Modulo 7 Seguranca
 
Exploits
ExploitsExploits
Exploits
 
Segurança em Angular SPA
Segurança em Angular SPASegurança em Angular SPA
Segurança em Angular SPA
 
Segurança PHP - por Samyr Abdo
Segurança PHP - por Samyr AbdoSegurança PHP - por Samyr Abdo
Segurança PHP - por Samyr Abdo
 

Destaque (6)

Acib
AcibAcib
Acib
 
Qualitypress - Less
Qualitypress - LessQualitypress - Less
Qualitypress - Less
 
Journalism II definitions
Journalism II definitionsJournalism II definitions
Journalism II definitions
 
E paper
E paper E paper
E paper
 
Online journalism
Online journalismOnline journalism
Online journalism
 
E paper
E paperE paper
E paper
 

Semelhante a Qualitypress - Segurança em Aplicações Web com PHP

Segurança em servidores Linux
Segurança em servidores LinuxSegurança em servidores Linux
Segurança em servidores LinuxImpacta Eventos
 
Gambiarra e PHP. Por que você deveria usar um WAF?
Gambiarra e PHP. Por que você deveria usar um WAF?Gambiarra e PHP. Por que você deveria usar um WAF?
Gambiarra e PHP. Por que você deveria usar um WAF?Sucuri
 
Segurança em Aplicativos Web
Segurança em Aplicativos WebSegurança em Aplicativos Web
Segurança em Aplicativos WebSergio Henrique
 
Palestra - Darkmira Tour PHP 2016 - A ilusão das referências sobre desenvolv...
Palestra - Darkmira Tour PHP 2016  - A ilusão das referências sobre desenvolv...Palestra - Darkmira Tour PHP 2016  - A ilusão das referências sobre desenvolv...
Palestra - Darkmira Tour PHP 2016 - A ilusão das referências sobre desenvolv...Thiago Dieb
 
PHP Desenvolvimento Seguro
PHP Desenvolvimento SeguroPHP Desenvolvimento Seguro
PHP Desenvolvimento SeguroFlávio Lisboa
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHPFelipe Ribeiro
 
4. Introdução ao PHP.pdf
4. Introdução ao PHP.pdf4. Introdução ao PHP.pdf
4. Introdução ao PHP.pdfRubenManhia
 
Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2PrinceGuru MS
 
Segurança da informação palestra wordcamp sp 2016
Segurança da informação   palestra wordcamp sp 2016Segurança da informação   palestra wordcamp sp 2016
Segurança da informação palestra wordcamp sp 2016Thauã Cícero Santos Silva
 
Apache PHP MySQL
Apache  PHP  MySQLApache  PHP  MySQL
Apache PHP MySQLkisb1337
 
5 – Desenvolvimento de Páginas Web Dinâmicas PHP: introdução
5 – Desenvolvimento de Páginas Web Dinâmicas PHP: introdução5 – Desenvolvimento de Páginas Web Dinâmicas PHP: introdução
5 – Desenvolvimento de Páginas Web Dinâmicas PHP: introduçãoAgrupamento de Escolas da Batalha
 
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
 
Desenvolvimento de Software I - USBWEBSERVER - PHP
Desenvolvimento de Software I - USBWEBSERVER - PHPDesenvolvimento de Software I - USBWEBSERVER - PHP
Desenvolvimento de Software I - USBWEBSERVER - PHPAndréia Santos
 
Proteja sua Hovercraft: Mantendo sua nave livre dos Sentinelas ( Versão Segi...
 Proteja sua Hovercraft: Mantendo sua nave livre dos Sentinelas ( Versão Segi... Proteja sua Hovercraft: Mantendo sua nave livre dos Sentinelas ( Versão Segi...
Proteja sua Hovercraft: Mantendo sua nave livre dos Sentinelas ( Versão Segi...Alexandro Silva
 

Semelhante a Qualitypress - Segurança em Aplicações Web com PHP (20)

Segurança em servidores Linux
Segurança em servidores LinuxSegurança em servidores Linux
Segurança em servidores Linux
 
Gambiarra e PHP. Por que você deveria usar um WAF?
Gambiarra e PHP. Por que você deveria usar um WAF?Gambiarra e PHP. Por que você deveria usar um WAF?
Gambiarra e PHP. Por que você deveria usar um WAF?
 
Segurança em Aplicativos Web
Segurança em Aplicativos WebSegurança em Aplicativos Web
Segurança em Aplicativos Web
 
Site invadido
Site invadidoSite invadido
Site invadido
 
Palestra - Darkmira Tour PHP 2016 - A ilusão das referências sobre desenvolv...
Palestra - Darkmira Tour PHP 2016  - A ilusão das referências sobre desenvolv...Palestra - Darkmira Tour PHP 2016  - A ilusão das referências sobre desenvolv...
Palestra - Darkmira Tour PHP 2016 - A ilusão das referências sobre desenvolv...
 
Floripa on Rails - Security Tips
Floripa on Rails  - Security TipsFloripa on Rails  - Security Tips
Floripa on Rails - Security Tips
 
Procergs php-seguro
Procergs php-seguroProcergs php-seguro
Procergs php-seguro
 
PHP Desenvolvimento Seguro
PHP Desenvolvimento SeguroPHP Desenvolvimento Seguro
PHP Desenvolvimento Seguro
 
Security & PHP
Security & PHPSecurity & PHP
Security & PHP
 
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com phpTratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHP
 
A Linguagem Php
A Linguagem PhpA Linguagem Php
A Linguagem Php
 
4. Introdução ao PHP.pdf
4. Introdução ao PHP.pdf4. Introdução ao PHP.pdf
4. Introdução ao PHP.pdf
 
Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2
 
Segurança da informação palestra wordcamp sp 2016
Segurança da informação   palestra wordcamp sp 2016Segurança da informação   palestra wordcamp sp 2016
Segurança da informação palestra wordcamp sp 2016
 
Apache PHP MySQL
Apache  PHP  MySQLApache  PHP  MySQL
Apache PHP MySQL
 
5 – Desenvolvimento de Páginas Web Dinâmicas PHP: introdução
5 – Desenvolvimento de Páginas Web Dinâmicas PHP: introdução5 – Desenvolvimento de Páginas Web Dinâmicas PHP: introdução
5 – Desenvolvimento de Páginas Web Dinâmicas PHP: introdução
 
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...
 
Desenvolvimento de Software I - USBWEBSERVER - PHP
Desenvolvimento de Software I - USBWEBSERVER - PHPDesenvolvimento de Software I - USBWEBSERVER - PHP
Desenvolvimento de Software I - USBWEBSERVER - PHP
 
Proteja sua Hovercraft: Mantendo sua nave livre dos Sentinelas ( Versão Segi...
 Proteja sua Hovercraft: Mantendo sua nave livre dos Sentinelas ( Versão Segi... Proteja sua Hovercraft: Mantendo sua nave livre dos Sentinelas ( Versão Segi...
Proteja sua Hovercraft: Mantendo sua nave livre dos Sentinelas ( Versão Segi...
 

Qualitypress - Segurança em Aplicações Web com PHP

  • 1. Segurança em aplicações web com PHP Segurança em aplicações web com PHP Rafael Cordeiro 16/08/2013
  • 2. Segurança em aplicações web com PHP Dicas para tornar seu site menos vulnerável...  Assunto em evidência;  Conhecimento das principais ameaças;  Conhecimento das técnicas que ajudam a evita-las;  Garantir a segurança de um sistema não é fácil;  Dicas incomuns que podem trazer um pouco mais de segurança;
  • 3. Segurança em aplicações web com PHP • Spoofing de formulário ocorre quando alguém faz uma postagem em um de seus formulários de algum local inesperado; • Uma técnica muito útil contra esse tipo de ataque é o uso de um token; Evitando Spoofing de formulário!
  • 4. Segurança em aplicações web com PHP • Todo dado externo a sua aplicação (GET, POST, COOKIE, SERVER), pode ser manipulado e merecem sua desconfiança e consequente validação. Sempre valide dados externos!
  • 5. Segurança em aplicações web com PHP • Defina um nome para o cookie de sessão, nomes comuns facilitam o seu roubo, também conhecido como session hijacking, PHPSESSID é o nome padrão usado pelo PHP para guardar ids de sessão. Mude o nome do cookie de sessão!
  • 6. Segurança em aplicações web com PHP • Ids de sessão devem ser armazenados em cookies, essa é uma regra básica que já vem como padrão na configuração do PHP, algo que não vem como padrão é o atributo session.cookie_httponly, que garante que os cookies de sessão só possam ser acessados via http, não podendo ser lidos por Javascript por exemplo, com isso estamos evitando ataques como XSS. Cookies de sessão só devem ser acessados via HTTP
  • 7. Segurança em aplicações web com PHP • Mesmo que os hackers consiga acessar seu sistema roubando uma sessão, eles terão pouco tempo de ação. Limite o tempo de vida das sessões
  • 8. Segurança em aplicações web com PHP • Valide a cada página o User Agent e o ip do dono da sessão, isso garante que o usuário que efetuou o login é o mesmo que está acessando a página atual. Valide a cada página a origem da sessão.
  • 9. Segurança em aplicações web com PHP • Em caso de mais de três tentativas de senha incorreta, bloqueie o IP de origem, ou adicione um Captcha como validação adicional, isso dificulta ataques de força bruta. Monitore os erros de senha
  • 10. Segurança em aplicações web com PHP • Restrinja o acesso às pastas do servidor, ou seja, permissões de execução e escrita somente em pastas apropriadas. Permissões em pastas
  • 11. Segurança em aplicações web com PHP • Senhas não devem ser armazenadas sem “cifragem”, sempre armazene senhas criptografadas, assim estaremos protegendo também nossos usuários, numa eventual invasão ao banco de dados. Não armazene senhas em texto puro.
  • 12. Segurança em aplicações web com PHP • Sempre valide os arquivos antes de salvar no servidor, isso evita subir arquivos que possam ser executados e consequentemente trazer algum dano ao seu sistema. Uploads de arquivos
  • 13. Segurança em aplicações web com PHP • Dados de configuração de sistemas em arquivos com extensões ini, XML, JSON, txt e etc. • Podemos colocar esses arquivos fora da pasta public_html ou adicionar um arquivo .htaccess com o código a seguir, nas pastas que queremos proteger. Proteja pastas contra acessos HTTP
  • 14. Segurança em aplicações web com PHP • Controle as exceções e erros ocorridos eventualmente no seu sistema. • Evite exibir dados sobre sua aplicação definindo um arquivo de log para registrar esses erros. Caso precise acompanhar as informações do arquivo de log em tempo real, acesse o servidor via SSH e use o comando tail -f pathlog/logfile. Controle de erros
  • 15. Segurança em aplicações web com PHP • Há uma variedade de problemas de segurança que surgem quando se utiliza soluções de hospedagem compartilhada. • No passado, PHP tentou resolver alguns destes problemas com a diretiva safe_mode. No entanto, como o manual do PHP afirma, “é arquitetonicamente incorreto tentar resolver esse problema no nível do PHP. “ Assim, safe_mode não estará mais disponível a partir do PHP 6. Ainda assim, há três diretivas do php.ini que continuam a ser importantes em uma hospedagem compartilhada: open_basedir, disable_functions e disable_classes. estas diretivas não depende de safe_mode, e eles permanecerão disponíveis para as versões futuras. Servidores compartilhados
  • 16. Segurança em aplicações web com PHP • open_basedir – Com essa diretiva é possível limitar os diretórios que o PHP pode abrir com por exemplo fopen ou include. Servidores compartilhados
  • 17. Segurança em aplicações web com PHP • disable_functions e disable_classes – Os disable_functions e disable_classes funcionam de forma semelhante, permitindo que você possa desabilitar certas funções nativas do PHP e classes por razões de segurança. Servidores compartilhados
  • 18. Segurança em aplicações web com PHP • Se for descoberto que seu sistema foi comprometido, investigue e descubra a falha explorada e principalmente desabilite as contas e defina uma estratégia de ativação utilizando e-mails. Desabilite as contas
  • 19. Segurança em aplicações web com PHP • Use programas de identificação de vulnerabilidade, eles permitem identificar, oferecer informações sobre elas e ainda orienta como resolve-las. Inspecione o seu sistema
  • 20. Segurança em aplicações web com PHP • Duas dicas de software que ajuda na exploração e resolução de falhas de segurança em sistemas web. • Software de exploração de vulnerabilidade: http://www.getmantra.com • Software de scan de aplicações web: http://www.mavitunasecurity.com/communityedition Programas de teste de vulnerabilidade