Segurança em PHP

2.875 visualizações

Publicada em

Segurança de suas aplicações em PHP

Publicada em: Tecnologia
  • Ótimo Augusto, estou sempre contigo na tempo real e mais uma vez te parabenizo pelo seu trabalho com a comunidade.
       Responder 
    Tem certeza que deseja  Sim  Não
    Insira sua mensagem aqui
  • Ótima apresentação!
       Responder 
    Tem certeza que deseja  Sim  Não
    Insira sua mensagem aqui

Segurança em PHP

  1. 1. SEGURANÇA EM PHP Augusto Pascutti
  2. 2. Augusto Pascutti 4 anos de experiência Zend Certified Engineer Co-Fundador PHPSP Host PHPSPCast Habari,CakePHP
  3. 3. Segurança
  4. 4. Princípios Se mantenha a eles e você terá: Um usuário feliz Um patrão feliz Finais de Semana e quem sabe férias
  5. 5. Segurança é ...
  6. 6. como um ogro ...
  7. 7. Que são como cebolas !
  8. 8. Segurança em camadas Segurança nunca é demais Segurança em profundidade Aplique camadas de segurança em tudo que puder Não conte com a bondade no mundo
  9. 9. Informação Confidencial
  10. 10. Informação Confidencial Classifique tudo que for sensível Impeça o acesso a essa informação Lei do menor privilégio Se o usuário não precisa ver, não deixe.
  11. 11. Segurança x Usabilidade Shozu.com
  12. 12. Segurança x Usabilidade reCaptcha
  13. 13. Segurança x Usabilidade Procure implementar segurança transparente ao usuário Se não for possível: Pense no Risco e na Usabilidade Tenha em mente que dependemos de usuários felizes NUNCA esqueça da usabilidade
  14. 14. Segurança x Usabilidade Qual o animal da figura ?
  15. 15. Vigie sempre Nunca confie no usuário Nunca confie em outras aplicações Nunca confie. Mantenha registro da onde, de quem e quando a informação for gerada
  16. 16. Filtre o INPUT Identifique o input Filtre o input
  17. 17. Identificando Input O input pode vir de diversos lugares Formulário Outra aplicação Sistema
  18. 18. Filtrando
  19. 19. Filtrando
  20. 20. Filtrando
  21. 21. Filtrando
  22. 22. Filtrando
  23. 23. Filtrando
  24. 24. Filtrando
  25. 25. Filtrando
  26. 26. Filtrando
  27. 27. Escape o Output O que é output ? echo, print, sprintf <?= Na grande maioria, o destino é o navegador Escapar HTML
  28. 28. Escape o Output
  29. 29. Escape o Output
  30. 30. Escape o Output
  31. 31. htmlentities() Converte TODO caractere para entidade HTML correspondente Segundo e terceiro parâmetro são opcionais Segundo: como as aspas (duplas e simples) seão tratadas Padrão: ENT_COMPAT ENT_QUOTES: Converte ambas para entidade HTML Terceiro: encoding do output Padrão: ISO-8859-1
  32. 32. Escape o Output
  33. 33. Brindes Extensão dos arquivos sempre “.php” Dentro do DocRoot, só o necessário Mantenha seu código simples e encapsulado Favoreça Orientação a Objetos
  34. 34. TOP 10 OWASP Lista de riscos de Segurança (rc1) de 2010 Injection XSS Quebra de Autenticação e Problemas de Sessões Referências não seguras a Objetos CSRF Erros de Configuração Falhas ao restringir acesso a URLs Redirecionamentos e Encaminhamentos não seguros Métodos de criptografia não seguros Segurança insuficiente no transporte de dados
  35. 35. Sql Injection O que é ? Envio de comandos não tratados pela aplicação para o interpretador Impacto Toda a base de dados pode ser lida ou modificada Pode garantir acesso ao banco de dados ou até ao Sistema Operacional
  36. 36. Cross Site Scripting (XSS) O que é ? Dados do atacante são enviados ao navegador do cliente Impacto Roubo de sessão, de dados sensíveis, phishing
  37. 37. Cross Site Request Forgery (CSRF) O que é ? O navegador é “enganado” e envia um comando a um site vulnerável Impacto Iniciar transações (tranferência, logout, cancelamento) Acesso sensível a dados Mudança de dados da conta
  38. 38. CSRF
  39. 39. CSRF
  40. 40. CSRF <img src="http://loja/comprar.php?quant=100" />
  41. 41. CSRF
  42. 42. CSRF
  43. 43. CSRF
  44. 44. Problemas de Configuração O que é ? Configuração de rede e do servidor de aplicação Impacto Acesso ao Sistema Operacional através de um problema conhecido Acesso a dados da aplicação
  45. 45. allow_url_fopen Permite acesso a recursos remotos Valor padrão: On Aliado ao ‘allow_url_include’ (> 5.2) é muito perigoso
  46. 46. allow_url_fopen $conteudo = file_get_contents(“http://www.google.com”)
  47. 47. allow_url_fopen include “http://www.bad-bad-site.com”
  48. 48. register_globals Exporta índices de super globais para variáveis comuns Impede que se identifique a origem do dado Padrão < 4.2: On >4.2: Off
  49. 49. register_globals
  50. 50. register_globals
  51. 51. register_globals
  52. 52. magic_quotes_gpc Escapa todos os dados em $_GET, $_POST e $_COOKIE Usa addslashes() e não escape nativo do seu banco Complica seu algoritmo de filtro Padrão: On Obsoleto no PHP 5.3 Removido do PHP 6
  53. 53. display_errors Exibe no output erros do PHP DEVE ser usado no desenvolvimento DEVE ser desligado na produção Padrão: On
  54. 54. error_reporting Controla os níveis de erros que devem ser exibidos Ajuda na identificação de erros e boas práticas Recomendado: -1
  55. 55. safe_mode Restringe algumas funcões tidas como prejudiciais Verifica se o dono do arquivo a ser executado é o mesmo do script em execução Melhora a segurança Não é suficiente Padrão: Off
  56. 56. Acesso a URLs Restritas O que é? Permitir que um usuário possa forjar uma autorização a uma URL sensível Impacto Permitir ações privilegiadas a qualquer pessoa
  57. 57. Redirecionamentos Inválidos O que é? Enviar o usuário para uma URL não valida Impacto Phishing
  58. 58. Criptografia Não Segura O que é? Falha na identificação de todos os dados que devem ser criptografados Uso de criptografia não segura (md5, sha1) Impacto Acesso a dados sensíveis Solução mcrypt
  59. 59. Transporte de dados O que é? Falta de segurança na troca de informações sensíveis Impacto Acesso a dados sensíveis Solução SSL ou TLS para transporte dos dados
  60. 60. Perguntas ? Augusto Pascutti augusto@phpsp.org.br @augustohp
  61. 61. Referências Essential PHP Security - Chris Chiflett - O’Reilly http://www.owasp.org/ http://phpsp.org.br/category/phpsp/phpspcast/ Segurança em PHP - Márcio Pessoa - Novatec

×