Segurança em PHP

2,870 views

Published on

Segurança de suas aplicações em PHP

Published in: Technology
2 Comments
7 Likes
Statistics
Notes
  • Ótimo Augusto, estou sempre contigo na tempo real e mais uma vez te parabenizo pelo seu trabalho com a comunidade.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Ótima apresentação!
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total views
2,870
On SlideShare
0
From Embeds
0
Number of Embeds
45
Actions
Shares
0
Downloads
166
Comments
2
Likes
7
Embeds 0
No embeds

No notes for slide
  • 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

    ×