Proteja sua aplicação com o zend framework 2

693 visualizações

Publicada em

Palestra no PHPEste, dia 3/10 em João Pessoa sobre o Zend Framework 2 e a Segurança. Proteja sua aplicação usando os bons componentes do Zend Framework e a boa configuração

Publicada em: Internet
0 comentários
3 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
693
No SlideShare
0
A partir de incorporações
0
Número de incorporações
45
Ações
Compartilhamentos
0
Downloads
8
Comentários
0
Gostaram
3
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide
  • setBinaryOutput(true) pour transformer le base64 en binaire
  • Proteja sua aplicação com o zend framework 2

    1. 1. Proteja sua aplicação com o Zend Framework 2 PHPEste - João Pessoa - 03/10/2015
    2. 2. Sobre mim Cyrille Grandval (@CyrilleGrandval) • Z-Team member : Zend Evangelist • Consultor PHP / Segurança desde 2000 • Professor / tutor em PHP e segurança das aplicações web • Palestrante internacional, autor de livros e artigos técnicos • Fundador da Darkmira França e Darkmira Brasil
    3. 3. OWASP Top 10 2013 A1 - Injeção de código A2 - Quebra de autenticação e Gerenciamento de Sessão A3 - Cross-Site Scripting (XSS) A4 - Referência Insegura e Direta a Objetos A5 - Configuração Incorreta de Segurança A6 - Exposição de Dados Sensíveis A7 - Falta de Função para Controle do Nível de Acesso A8 - Cross-Site Request Forgery (CSRF) A9 - Utilização de Componentes Vulneráveis Conhecidos A10 - Redirecionamentos e Encaminhamentos Inválidos https://www.owasp.org/images/9/9c/OWASP_Top_10_2013_PT-BR.pdf
    4. 4. Lembrança Uma configuração segura tem de ser definida, implementada e mantida cada dia • Não exiba as mensagens de erros do sistema / stacktrace • Modificar os logins / senhas padrão das aplicações • Manter a versão de PHP atualizada • Manter os librairies atualizados
    5. 5. Primeiro mantra Think out of the box
    6. 6. Think out of the box Ligue cada tesouro! ligar os 9 tesouros 4 linhas retas sem retirar a caneta 1 2 3 4 5 6 7 8 9
    7. 7. Organização do código • 1 diretório público sendo a raiz web • 1 front controller só : index.php • configurações : • globais : *.global.php • locais : *.local.php -> (.gitignore)
    8. 8. Componentes de segurança • ZendAuthentification • ZendDb • ZendCaptcha • ZendCrypt • ZendEscaper • ZendFilter • ZendInputFilter • ZendPermissions • ZendMath • ZendValidator
    9. 9. Segundo mantra Filter input, escape output
    10. 10. Trust no one
    11. 11. Filtrar Existe vários filtros : ZendFilterBlacklist ZendFilterBoolean ZendFilterCallback ZendFilterDigits ZendFilterDecrypt ZendFilterEncrypt ZendFilterHtmlEntities ZendFilterPregReplace ZendFilterStripTags ZendFilterToInt ZendFilterWhiteList ZendI18nFilter* e muito mais
    12. 12. Filtrar
    13. 13. Filtrar Para integrar em um formulário • implementar o interface InputFilterProviderInterface • criar um método publico getInputFilterSpecification • especificar o filtro para o campo nesse método
    14. 14. Criar um filtro de entrada • permite de definir uma coleção de filtros e validators • pode ser aplicado sobre qualquer tipo de dados (formulários, parâmetro GET, COOKIE, headers HTTP, …) • contém um método isValid que verifica a validade dos dados
    15. 15. Criar um filtro de entrada
    16. 16. Usar um filtro de entrada
    17. 17. ZendValidatorInArray ZendValidatorLessThan ZendValidatorRegexp ZendValidatorStringLength ZendValidatorUri ZendI18nValidator* e muito mais Validar Existe vários validators : ZendValidatorDbRecordExists ZendValidatorCallback ZendValidatorCreditCard ZendValidatorDigits ZendValidatorEmailAddress ZendValidatorGreaterThan
    18. 18. Validar Cada validator contém um método isValid
    19. 19. Validar Para integrar em um formulário • implementar o interface InputFilterProviderInterface • criar um método publico getInputFilterSpecification • especificar o validator para o campo nesse método
    20. 20. Escapar Existe vários formatos : • escapeHTML() • escapeHTMLattr() • escapeUrl() • escapeJs() • escapeCss()
    21. 21. Escapar Ou diretamente no view echo $this->escapeHTML($this->message);
    22. 22. Logar O componente ZendAuthentification fornece API para se conectar e vários adapters são disponiveis : • Database Table • Digest • HTTP • LDAP Você também pode criar o seu adapter.
    23. 23. Controlar acesso Criar um Access Control List • simple • evolutivo • facilmente auditável • deny all por padrão
    24. 24. Controlar acesso O que é um resource • objeto ao qual o acesso é controlada O que é um role • objeto que pode pedir o acesso a um recurso
    25. 25. Controlar acesso
    26. 26. Configurar as sessões
    27. 27. Configurar as sessões Usar os validators para as sessões
    28. 28. Configurar as sessões Regeração do ID de sessão contra a fixação
    29. 29. Criptografar ZendCrypt permite implementar uma criptografia avançada e simple • ZendCryptBlockCipher • ZendCryptHash • ZendCryptHmac • ZendCryptKeyDerivation • ZendCryptPassword • ZendCryptPublicKey • ZendCryptSymmetic
    30. 30. Criptografar com BlockCipher ZendCryptBlockCipher usa o adapter Mcrypt • usar para encrypt/decrypt dados sensiveis (symmetric encryption) • gere também a autenticação HMAC Métodos do API • setKey($key) • encrypt($data) • decrypt($data)
    31. 31. Criptografar com BlockCipher
    32. 32. Password hash Parar de usar • md5 ou sha1 com ou sem salt Recomandado • bcrypt • scrypt
    33. 33. Criptografar com Bcrypt ZendCryptPasswordBCrypt Métodos do API • create($password) • verify($password, $hash) • setSalt($salt) • setCost($cost)
    34. 34. Criptografar com Bcrypt
    35. 35. Prepared Statement Declarações preparadas que são armazenados no servidor de bancos de dados objetivo : • executar consultas sem variação da sintaxe • mudança apenas nos parâmetros • velocidade na execução dos comandos SQL • maior segurança pois os dados são identificados e escapados
    36. 36. Usar os prepared statement Parâmetro anonimo Parâmetro nomeado
    37. 37. Implementar um token
    38. 38. Se manter informado Para ter uma boa segurança, é preciso cuidar do desenvolvimento da sua aplicação mas também das ferramentas usadas. Se mantenha em alerta das falhas de segurança do Zend Framework 2 http://framework.zend.com/security/advisories/
    39. 39. Debug Segurar é também criar uma aplicação sem comportamento anormal, sem bug. Usar um debugguer ao invês de var_dump. Zend fornece uma ferramenta de debug com o Zend Server : Z-Ray • Baixa o new Z-Ray Standalone (não precisa do Zend Server) : http://www.zend.com/en/products/z-ray/z-ray-preview • Participe do novo Z-Ray Standalone com seu feedback : https://docs.google.com/a/zend.com/forms/d/1xyg592SHOm5g1JJ5XLa 1KjgB1D0th5v7dGoMU1i2ZgU/viewform?usp=send_form
    40. 40. Obrigado :-) Dê seu feedback no http://joind.in/event/view/4001

    ×