PHP e Segurança: é possível

PHP e Segurança: é possível

Apresentado no PHP Experience 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

April 05, 2019
Tweet

Transcript

  1. PHP E SEGURANÇA SIM, É POSSÍVEL

  2. @dianaarnos Dev, Sec, Music, Kung Fu. Dev / Architect @

    Senha Segura Evangelist @ PHPSP Evangelist @ PHPWomenBR
  3. PHP É A LINGUAGEM MAIS USADA NA WEB

  4. None
  5. VEJAMOS:

  6. fonte: https://w3techs.com

  7. fonte: https://w3techs.com

  8. fonte: https://w3techs.com

  9. fonte: https://w3techs.com

  10. fonte: https://w3techs.com

  11. None
  12. É POPULAR

  13. MAS MUITO CRITICADO

  14. A LINGUAGEM É JULGADA INEFICIENTE E INSEGURA

  15. POR DESENVOLVEDORES E EMPRESAS

  16. None
  17. None
  18. None
  19. None
  20. None
  21. NÓS SABEMOS O PORQUÊ

  22. BAIXA CURVA DE APRENDIZADO

  23. BAIXA CURVA DE APRENDIZADO +

  24. BAIXA CURVA DE APRENDIZADO + FACILIDADE DE LIDAR COM REQUESTS

    =
  25. BAIXA CURVA DE APRENDIZADO + FACILIDADE DE LIDAR COM REQUESTS

    = SOBRINHOS
  26. None
  27. CÓDIGO LEGADO

  28. A CULPA É DO PASSADO

  29. SERÁ?

  30. fonte: https://w3techs.com

  31. PHP 3 E 4?

  32. None
  33. fonte: https://w3techs.com

  34. 70% DOS 80% É PHP 5

  35. fonte: https://w3techs.com

  36. VAMOS LÁ NO PHP.NET

  37. fonte: https://php.net PHP VERSIONS LIFECYCLE

  38. NENHUMA VERSÃO DO PHP 5 TEM SUPORTE

  39. PHP 7: UMA NOVA ESPERANÇA

  40. fonte: https://w3techs.com

  41. OPA...

  42. fonte: https://php.net

  43. 36,5% DO PHP 7 NÃO TEM MAIS SUPORTE

  44. VAMOS FAZER AS CONTAS?

  45. 80% DA WEB É PHP

  46. 70% DOS 80% É 5.X E NÃO TEM MAIS SUPORTE

  47. O QUE NOS DEIXA COM 30% DOS 80% DA WEB

    SENDO 7.X
  48. PORTANTO 24% DA WEB É PHP 7.X

  49. DESSES 24%, 36,5% SÃO PHP 7.0 E NÃO TEM MAIS

    SUPORTE
  50. LOGO, TEMOS 63,5% DOS 24% DA WEB COM VERSÕES VÁLIDAS

  51. ENTÃO...

  52. EM 2019

  53. 2019

  54. APESAR DE 80% DA WEB SER PHP….

  55. SÓ 15,24% DA WEB TEM VERSÕES SEGURAS E ATUALIZADAS DE

    PHP
  56. None
  57. E DAÍ?

  58. fonte: https://www.cvedetails.com

  59. fonte: https://www.cvedetails.com

  60. fonte: https://www.cvedetails.com

  61. fonte: https://www.cvedetails.com

  62. fonte: https://www.cvedetails.com

  63. QUEM ESCOLHE MANTER AS VERSÕES INSEGURAS NO AR?

  64. JÁ TAVA ASSIM

  65. JÁ TAVA ASSIM DÁ TRABALHO ATUALIZAR

  66. JÁ TAVA ASSIM DÁ TRABALHO ATUALIZAR É CULPA DO FRAMEWORK

  67. JÁ TAVA ASSIM DÁ TRABALHO ATUALIZAR É CULPA DO FRAMEWORK

    NÃO É O FOCO DO TIME AGORA
  68. JÁ TAVA ASSIM DÁ TRABALHO ATUALIZAR É CULPA DO FRAMEWORK

    O DEV QUE FEZ NÃO TRABALHA MAIS AQUI NÃO É O FOCO DO TIME AGORA
  69. None
  70. ESTAMOS SEMPRE BUSCANDO QUEBRAR O PRECONCEITO

  71. QUEREMOS ESPALHAR AS BOAS PRÁTICAS

  72. “PARTE DA ZEND ENGINE FOI REESCRITA”

  73. “PERFORMANCE MUITO APRIMORADA”

  74. fonte: http://www.zend.com/en/resources/php7_infographic

  75. fonte: http://www.zend.com/en/resources/php7_infographic

  76. fonte: http://www.zend.com/en/resources/php7_infographic

  77. None
  78. E A SEGURANÇA?

  79. A LINGUAGEM EVOLUI...

  80. PHP 7.0:

  81. - FILTERED UNSERIALIZE() PHP 7.0:

  82. - FILTERED UNSERIALIZE() PHP 7.0: - CSPRNG FUNCTIONS:

  83. - FILTERED UNSERIALIZE() PHP 7.0: - RANDOM_BYTES() E RANDOM_INT() -

    CSPRNG FUNCTIONS:
  84. PHP 7.1:

  85. PHP 7.1:

  86. PHP 7.2:

  87. - PASSWORD_ARGON2I PHP 7.2:

  88. - PASSWORD_ARGON2I PHP 7.2: - LIBSODIUM NATIVA (CORE EXTENSION)

  89. - PASSWORD_ARGON2I PHP 7.2: - LIBSODIUM NATIVA (CORE EXTENSION) -

    MCRYPT REMOVIDA DO CORE
  90. PHP 7.3:

  91. - MELHORIAS NA IMPLEMENTAÇÃO DE ARGON2: PHP 7.3:

  92. - MELHORIAS NA IMPLEMENTAÇÃO DE ARGON2: PHP 7.3: - ARGON2I,

    ARGON2D, ARGON2ID
  93. ONE MORE THING...

  94. PSRs DE SEGURANÇA

  95. fonte: https://www.php-fig.org/

  96. MAS...

  97. fonte: https://groups.google.com/forum/#!forum/php-fig

  98. “This thread is an appeal for people who wish to

    join the working group so we can get the ball rolling with a (re)-entrance vote.”
  99. PSR-9

  100. - PADRÃO PARA PESQUISADORES REPORTAREM VULNERABILIDADES PARA UM PROJETO PSR-9

  101. PSR-10

  102. - PADRÃO PARA UM PROJETO DIVULGAR PUBLICAMENTE SUAS FALHAS DE

    SEGURANÇA E MEDIDAS CORRETIVAS PSR-10
  103. ESSES SÃO OS ESFORÇOS DA LINGUAGEM

  104. E OS SEUS?

  105. ALGUMAS BOAS PRÁTICAS

  106. ATUALIZAR O PHP REGULARMENTE

  107. ATUALIZAR PACKAGES REGULARMENTE

  108. HTTPS SEMPRE

  109. NUNCA EXIBIR ERROS E WARNINGS

  110. FILTRAR E VALIDAR TODO TIPO DE DADO

  111. USE QUERIES PARAMETRIZADAS (PREPARED STATEMENTS)

  112. DEFINIR OPEN_BASEDIR NO PHP.INI

  113. CUIDADO AO LIDAR COM SESSÕES DE USUÁRIO

  114. CSRF TOKENS EM FORMULÁRIOS

  115. LINKS DE REFERÊNCIA http://bit.ly/phpx-links

  116. ACESSO AOS SLIDES http://bit.ly/phpx-seguranca

  117. OBRIGADA! AVALIE NO JOIND.IN https://joind.in/talk/71f42