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