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

20
Segurança em aplicações web com PHP Segurança em aplicações web com PHP Rafael Cordeiro 16/08/2013

description

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

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

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

Segurança em aplicações web com PHP

Segurança em aplicações web com PHP

Rafael Cordeiro16/08/2013

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

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;

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

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!

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

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!

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

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!

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

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

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

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

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

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.

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

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

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

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

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

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.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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