PHP e Segurança: é possível - PHPConference BR 2019

4ce43cd2535d0afe50065a743af646e9?s=47 Diana Arnos
December 06, 2019

PHP e Segurança: é possível - PHPConference BR 2019

Por muito tempo, qualquer aplicação em PHP era automaticamente considerada insegura por muita gente.
Dificilmente um desenvolvedor pensava em termos de segurança e aplicações web eram porcamente construídas e se apresentavam cheias de brechas.
Hoje, as versões mais recentes do PHP disponibilizam ferramentas de segurança e criptografia moderna, além de iniciativas internas focadas em segurança terem sido retomadas. Mas, infelizmente, o PHP não resolve tudo sozinho, é necessário que os desenvolvedores tenham um mínimo de preocupação e conhecimento sobre desenvolvimento seguro.
Vamos conhecer as mais recentes iniciativas da linguagem a esse respeito e também alguns dos problemas mais comuns de design de código para sabermos o que evitar durante a fase de design e implementação.

4ce43cd2535d0afe50065a743af646e9?s=128

Diana Arnos

December 06, 2019
Tweet

Transcript

  1. PHP E SEGURANÇA Sim, é possível

  2. @dianaarnos Dev, Sec, Music, Kung Fu. Engenheira de Software @

    Blackfire.io Arquiteta e Desenvolvedora @ MT4 Evangelista @ PHPSP Evangelista @ PHPWomenBR
  3. PHP AINDA É A LINGUAGEM MAIS UTILIZADA NA WEB

  4. None
  5. https://w3techs.com/

  6. https://w3techs.com/

  7. https://w3techs.com/

  8. https://w3techs.com/

  9. https://w3techs.com/

  10. PHP É POPULAR E ISSO É ÓTIMO

  11. https://w3techs.com/

  12. https://w3techs.com/

  13. MAS JAVA É CONFIÁVEL

  14. None
  15. PHP ESTÁ NO TOP 5 DAS LIGUAGENS MAIS TEMIDAS, SEGUNDO

    A ÚLTIMA PESQUISA DO STACK OVERFLOW
  16. https://insights.stackoverflow.com/survey/2019#most-loved-dreaded-and-wanted

  17. None
  18. PHP É UMA LINGUAGEM VISTA COMO INSEGURA E NÃO-CONFIÁVEL

  19. HÁ UMA RECEITA PARA ISSO:

  20. BAIXA CURVA DE APRENDIZADO

  21. BAIXA CURVA DE APRENDIZADO + FÁCIL TRABALHAR COM REQUEST/RESPONSE

  22. BAIXA CURVA DE APRENDIZADO + FÁCIL TRABALHAR COM REQUEST/RESPONSE +

    VELOCIDADE DE IMPLEMENTAÇÃO
  23. None
  24. None
  25. E TEM MAIS COISA AÍ:

  26. https://w3techs.com/

  27. https://w3techs.com/

  28. PHP 4?

  29. None
  30. https://w3techs.com/

  31. https://w3techs.com/

  32. VAMOS DAR UMA OLHADA NAS VERSÕES DE PHP QUE AINDA

    TÊM SUPORTE
  33. https://www.php.net/supported-versions.php

  34. https://www.php.net/supported-versions.php

  35. https://w3techs.com/

  36. https://w3techs.com/

  37. https://w3techs.com/

  38. https://w3techs.com/

  39. https://w3techs.com/

  40. https://www.php.net/supported-versions.php

  41. https://www.php.net/supported-versions.php

  42. https://w3techs.com/

  43. https://w3techs.com/

  44. ENTÃO, APESAR DE 79% DA WEB RODAR EM PHP...

  45. 43,9% É PHP 7x

  46. 43,9% DE 79% ≅ 34,69%

  47. 34,69% DA WEB RODA EM PHP PHP 7x

  48. None
  49. MAS…

  50. MAS… 45,1% DESSES 34,69%, É PHP 7.0 E 7.1

  51. MAS… 45,1% DESSES 34,69%, É PHP 7.0 E 7.1 SEM

    SUPORTE.
  52. ENTÃO NOS SOBRAM 54,9% DESSES 34,69%

  53. 54,9% DE 34,69% ≅ 19,04%

  54. ENTÃO...

  55. APENAS 19,04% DAS APLIAÇÕES WEB PHP ESTÃO RODANDO VERSÕES ATUALIZADAS

    E SEGURAS
  56. None
  57. E DAÍ?

  58. https://www.cvedetails.com

  59. https://www.cvedetails.com *Common Vulnerabilities and Exposures

  60. https://www.cvedetails.com

  61. https://www.cvedetails.com

  62. https://www.cvedetails.com

  63. https://www.cvedetails.com

  64. https://www.cvedetails.com

  65. https://www.exploit-db.com/

  66. https://www.exploit-db.com/

  67. https://www.exploit-db.com/

  68. https://www.exploit-db.com/

  69. https://www.exploit-db.com/

  70. https://www.exploit-db.com/

  71. https://www.exploit-db.com/

  72. https://www.exploit-db.com/

  73. None
  74. PRIMEIRA DICA BÁSICA DE SEGURANÇA:

  75. SEMPRE USE VERSÕES DE PHP ATUALIZADAS E COM SUPORTE ATIVO

  76. None
  77. OBRIGADA!

  78. A LINGUAGEM ESTÁ EVOLUINDO

  79. SEGURANÇA É UMA DAS SUAS MAIORES PREOCUPAÇÕES

  80. E O QUE FOI FEITO NESSE PONTO?

  81. PHP 7.0 FILTERED UNSERIALIZE( )

  82. unserialize($data, ["allowed_classes" => ["ClassOne", "ClassTwo"]]);

  83. PHP 7.0 FILTERED UNSERIALIZE( ) CSPRNG FUNCTIONS RANDOM_BYTES( ) RANDOM_INT(

    )
  84. PHP 7.1

  85. PHP 7.2 PASSWORD_ARGON2I

  86. PHP 7.2 PASSWORD_ARGON2I LIBSODIUM COMO CORE EXTENSION

  87. PHP 7.2 PASSWORD_ARGON2I LIBSODIUM COMO CORE EXTENSION MCRYPT REMOVIDA DO

    CORE
  88. PHP 7.3 NOVAS IMPLEMENTAÇÕES DE ARGON2 ARGON2I ARGON2D ARGON2ID

  89. PHP 7.4 OPÇÃO 'MAX_DEPTH' NA UNSERIALIZE( ) (E UM INI

    SETTING TAMBÉM) MUDANÇAS NA PROC_OPEN( ) PASSWORD_HASH( ) AGORA TEM ARGON2I(D) POR PADRÃO
  90. ESSAS FEATURES AJUDAM A CONSTRUIR UMA LINGUAGEM MAIS SEGURA

  91. E COMO CONSTRUIR UMA APLICAÇÃO MAIS SEGURA?

  92. ALGUMAS BOAS PRÁTICAS:

  93. ATUALIZE O PHP REGULARMENTE

  94. ATUALIZE PACKAGES REGULARMENTE

  95. SENSIOLABS/SECURITY-CHECKER

  96. HTTPS SEMPRE

  97. NUNCA EXIBIR ERROS E WARNINGS

  98. FILTRAR E VALIDAR TODO TIPO DE DADO

  99. SEMPRE USE QUERIES PARAMETRIZADAS (PREPARED STATEMENTS)

  100. DEFINIR OPEN_BASEDIR NO PHP.INI

  101. ATENÇÃO ESPECIAL AO LIDAR COM SESSÕES DE USUÁRIO

  102. CSRF TOKENS EM FORMULÁRIOS

  103. LEMBRE-SE:

  104. ATUALIZE O PHP PARA EVITAR LIDAR COM VULNERABILIDADES NÃO CORRIGIDAS

    LEMBRE-SE:
  105. ATUALIZE O PHP PARA EVITAR LIDAR COM VULNERABILIDADES NÃO CORRIGIDAS

    SEMPRE CONFIRA AS BIBLIOTECAS EXTERNAS QUE UTILIZA LEMBRE-SE:
  106. REFERÊNCIAS http://bit.ly/diana-ref

  107. SLIDES http://bit.ly/diana-slides

  108. OBRIGADA! Fale comigo: @dianaarnos