SlideShare a Scribd company logo
1 of 37
Download to read offline
Segurança
em 2016
Segurança PHP em 2016 www.galvao.eti.br
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 1 / 37
Presidente da ABRAPHP – Associação Brasileira de Profissionais PHP
Diretor da PHP Conference Brasil
Contribui para a tradução da documentação oficial
Atua como Zend Framework Evangelist para o ZTeam, da Zend.
Professor Especialista de Pós-Graduação UNOESC (SC) e
Faculdade Alfa (PR)
20+ anos desenvolvendo sistemas e aplicações com interface web
15+ destes com PHP
7+ com Zend Framework
Palestrante em eventos nacionais e internacionais
Instrutor de cursos presenciais e a distância
Fundador e líder do GU PHPBR
Fundador* e membro do GU PHPRS
Site: http://www.galvao.eti.br/
http://people.php.net/galvao
Twitter: @galvao
Slides e Documentos: http://slideshare.net/ergalvao
Github: http://github.com/galvao
Posts: https://medium.com/@galvao
Quem?!
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 2 / 37
www.galvao.eti.brSegurança PHP em 2016
Sumário
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 3 / 37
www.galvao.eti.br
O status da Segurança PHP em 2016
● Hashing
● PRNG
● Criptografia
● Banco de Dados
● Tipagem
Segurança PHP em 2016
Sumário
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 4 / 37
www.galvao.eti.brSegurança PHP em 2016
Tudo se resume a evolução
Hashing (Senhas)
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 5 / 37
www.galvao.eti.brSegurança PHP em 2016
md5('my_password');
sha1('my_password');
crypt('my_password', 'my_salt');
Hashing (Senhas)
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 6 / 37
www.galvao.eti.br
md5('my_password');
sha1('my_password');
crypt('my_password', 'my_salt');
Segurança PHP em 2016
Hashing (Senhas)
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 7 / 37
www.galvao.eti.br
md5('my_password');
sha1('my_password');
crypt('my_password', 'my_salt');
Segurança PHP em 2016
Hashing (Senhas)
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 8 / 37
www.galvao.eti.br
<?php
$hash = password_hash('my_password',
PASSWORD_BCRYPT,
['cost' => 10,
'salt' => 'this_is_my_salt_is_my_salt']
);
Segurança PHP em 2016
Hashing (Senhas)
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 9 / 37
www.galvao.eti.br
<?php
$hash = password_hash('my_password',
PASSWORD_BCRYPT,
['cost' => 10,
'salt' => 'this_is_my_salt_is_my_salt']
);
if (password_verify('my_password', $hash)) {
// YAY!
}
Segurança PHP em 2016
Hashing (Senhas)
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 10 / 37
www.galvao.eti.br
<?php
$pass = 'my_password';
$options = ['cost' => 10];
$hash = password_hash($pass,
PASSWORD_DEFAULT,
$options
);
if (password_verify($pass, $hash)) {
if (password_needs_rehash($hash,
PASSWORD_DEFAULT,
$options)) {
$newHash = password_hash($pass,
PASSWORD_DEFAULT,
$options);
}
}
Segurança PHP em 2016
Hashing (Senhas)
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 11 / 37
www.galvao.eti.br
<?php
$pass = 'my_password';
$options = ['cost' => 10];
$hash = password_hash($pass,
PASSWORD_DEFAULT,
$options
);
if (password_verify($pass, $hash)) {
if (password_needs_rehash($hash,
PASSWORD_DEFAULT,
$options)) {
$newHash = password_hash($pass,
PASSWORD_DEFAULT,
$options);
}
}
Segurança PHP em 2016
Hashing (Senhas)
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 12 / 37
www.galvao.eti.br
<?php
$pass = 'my_password';
$options = ['cost' => 10];
$hash = password_hash($pass,
PASSWORD_DEFAULT,
$options
);
if (password_verify($pass, $hash)) {
if (password_needs_rehash($hash,
PASSWORD_DEFAULT,
$options)) {
$newHash = password_hash($pass,
PASSWORD_DEFAULT,
$options);
}
}
Segurança PHP em 2016
PRNG
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 13 / 37
www.galvao.eti.br
rand($min, $max);
mt_rand($min, $max);
// Implementação qualquer de randomização
// de strings, tipo essa
Segurança PHP em 2016
PRNG
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 14 / 37
www.galvao.eti.br
rand($min, $max);
mt_rand($min, $max);
// Implementação qualquer de randomização
// de strings, tipo essa
Segurança PHP em 2016
PRNG
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 15 / 37
www.galvao.eti.br
rand($min, $max);
mt_rand($min, $max);
// Implementação qualquer de randomização
// de strings, tipo essa
Segurança PHP em 2016
PRNG
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 16 / 37
www.galvao.eti.brSegurança PHP em 2016
<?php
$randomInt = random_int(0, 10);
PRNG
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 17 / 37
www.galvao.eti.brSegurança PHP em 2016
<?php
$randomInt = random_int(0, 10);
$randomStr = random_bytes(22);
PRNG
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 18 / 37
www.galvao.eti.brSegurança PHP em 2016
<?php
$randomInt = random_int(0, 10);
$randomStr = random_bytes(22);
echo $randomInt . PHP_EOL;
echo base64_encode($randomStr);
PRNG
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 19 / 37
www.galvao.eti.brSegurança PHP em 2016
<?php
try {
$randomInt = random_int(0, 10);
echo $randomInt . PHP_EOL;
} catch (Exception $e) {
die('Lib de randomização não encontrada: ' .
$e->getMessage());
}
try {
$randomStr = random_bytes(22);
echo base64_encode($randomStr);
} catch (Exception $e) {
die('Lib de randomização não encontrada: ' .
$e->getMessage());
}
PRNG
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 20 / 37
www.galvao.eti.brSegurança PHP em 2016
<?php
try {
$randomInt = random_int(0, 10);
echo $randomInt . PHP_EOL;
} catch (Exception $e) {
die('Lib de randomização não encontrada: ' .
$e->getMessage());
}
try {
$randomStr = random_bytes(22);
echo base64_encode($randomStr);
} catch (Exception $e) {
die('Lib de randomização não encontrada: ' .
$e->getMessage());
}
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 21 / 37
www.galvao.eti.br
mcrypt_encrypt(MCRYPT_RIJNDAEL_128,
$key,
$str,
MCRYPT_MODE_CBC,
$iv
);
mcrypt_decrypt(MCRYPT_RIJNDAEL_128,
$key,
$crypt,
MCRYPT_MODE_CBC,
$iv
);
Segurança PHP em 2016
Criptografia
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 22 / 37
www.galvao.eti.br
mcrypt_encrypt(MCRYPT_RIJNDAEL_128,
$key,
$str,
MCRYPT_MODE_CBC,
$iv
);
mcrypt_decrypt(MCRYPT_RIJNDAEL_128,
$key,
$crypt,
MCRYPT_MODE_CBC,
$iv
);
Segurança PHP em 2016
Criptografia
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 23 / 37
www.galvao.eti.br
$key = Sodiumrandombytes_buf(SodiumCRYPTO_SECRETBOX_KEYBYTES);
$nonce =
Sodiumrandombytes_buf(SodiumCRYPTO_SECRETBOX_NONCEBYTES);
$ciphertext = Sodiumcrypto_secretbox('test', $nonce, $key);
Segurança PHP em 2016
Criptografia
$plaintext = Sodiumcrypto_secretbox_open($ciphertext, $nonce, $key);
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 24 / 37
www.galvao.eti.br
$crypt = openssl_encrypt('teste', 'blowfish', 'foo', 0, '11122233');
Segurança PHP em 2016
Criptografia
$plaintext = openssl_decrypt($crypt, 'blowfish', 'foo', 0, '11122233');
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 25 / 37
www.galvao.eti.brSegurança PHP em 2016
Banco de Dados
mysql_*();
Queries com valores diretos;
Entre outras coisas...
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 26 / 37
www.galvao.eti.brSegurança PHP em 2016
Banco de Dados
mysql_*();
Queries com valores diretos;
Entre outras coisas...
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 27 / 37
www.galvao.eti.brSegurança PHP em 2016
Banco de Dados
$dsn = 'mysql:dbname=nome_do_banco;host=127.0.0.1';
$user = 'usuario_do_banco';
$password = 'senha_do_banco';
$value = 'ABC'
try {
$dbh = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
echo 'Conexão falhou: ' . $e->getMessage();
}
$sql = 'SELECT * FROM produto WHERE nome=:clause';
$sth = $dbh->prepare($sql);
$sth->bindParam(':clause', $value, PDO::PARAM_STR);
$sth->execute();
$red = $sth->fetchAll();
var_dump($red[0]['nome']);
$dbh = NULL;
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 28 / 37
www.galvao.eti.brSegurança PHP em 2016
Banco de Dados
$dsn = 'mysql:dbname=nome_do_banco;host=127.0.0.1';
$user = 'usuario_do_banco';
$password = 'senha_do_banco';
$value = 'ABC'
try {
$dbh = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
echo 'Conexão falhou: ' . $e->getMessage();
}
$sql = 'SELECT * FROM produto WHERE nome=:clause';
$sth = $dbh->prepare($sql);
$sth->bindParam(':clause', $value, PDO::PARAM_STR);
$sth->execute();
$red = $sth->fetchAll();
var_dump($red[0]['nome']);
$dbh = NULL;
Tipagem
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 29 / 37
www.galvao.eti.br
<?php
declare(strict_types=1);
function foo(int $x, int $y)
{
return $x + $y;
}
echo foo('1', 2);
Segurança PHP em 2016
Tipagem
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 30 / 37
www.galvao.eti.br
<?php
declare(strict_types=1);
function foo(int $x, int $y)
{
return $x + $y;
}
echo foo('1', 2);
Segurança PHP em 2016
Fatal error: Uncaught TypeError: Argument 1 passed to foo()
must be of the type integer, string given, called in
/home/vagrant/php7tests/t1.php on line 9
and defined in /home/vagrant/php7tests/t1.php:4
Stack trace:
...
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 31 / 37
www.galvao.eti.brSegurança PHP em 2016
Constantes
Nem tudo muda…
… ou o que eu quero dizer com “outras coisas”
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 32 / 37
www.galvao.eti.brSegurança PHP em 2016
Constantes
Imagem
by nixCraft
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 33 / 37
www.galvao.eti.brSegurança PHP em 2016
Constantes
Segurança deixa a aplicação lenta?
Segurança é difícil de aprender?
Segurança é difícil de implementar?
A resposta continua sendo a mesma:
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 34 / 37
www.galvao.eti.brSegurança PHP em 2016
Constantes
Segurança deixa a aplicação lenta?
Segurança é difícil de aprender?
Segurança é difícil de implementar?
A resposta continua sendo a mesma:
NÃO IMPORTA!
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 35 / 37
www.galvao.eti.brSegurança PHP em 2016
Constantes
Notegraphy,
Galvão
INFORME-SE!
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 36 / 37
www.galvao.eti.brSegurança PHP em 2016
Acompanhe as mudanças da linguagem
https://wiki.php.net/rfc
Usando libsodium com PHP
https://paragonie.com/book/pecl-libsodium
Pesquise e ESTUDE!
https://www.owasp.org/
RTFM!!!
http://php.net/manual/en
Muito obrigado!
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 37 / 37
www.galvao.eti.br
? Dúvidas?
↓ Críticas?
↑ Elogios?!
Segurança PHP em 2016

More Related Content

What's hot

PHP na Tela Escura: Aplicações Poderosas em Linha de Comando
PHP na Tela Escura: Aplicações Poderosas em Linha de ComandoPHP na Tela Escura: Aplicações Poderosas em Linha de Comando
PHP na Tela Escura: Aplicações Poderosas em Linha de ComandoRafael Jaques
 
Otimizando a execução de código-fonte PHP
Otimizando a execução de código-fonte PHPOtimizando a execução de código-fonte PHP
Otimizando a execução de código-fonte PHPEr Galvão Abbott
 
Zend Framework 3 - porque só o que existe pode ser aprimorado
Zend Framework 3 - porque só o que existe pode ser aprimoradoZend Framework 3 - porque só o que existe pode ser aprimorado
Zend Framework 3 - porque só o que existe pode ser aprimoradoFlávio Lisboa
 
Zend framework 3 Hangout 2016
Zend framework 3 Hangout 2016Zend framework 3 Hangout 2016
Zend framework 3 Hangout 2016Flávio Lisboa
 
Desenvolvendo mvp com python
Desenvolvendo mvp com pythonDesenvolvendo mvp com python
Desenvolvendo mvp com pythonBruno Rocha
 
[FISL 16] PHP no Campo de Batalha: Segurança Avançada e Programação Defensiva...
[FISL 16] PHP no Campo de Batalha: Segurança Avançada e Programação Defensiva...[FISL 16] PHP no Campo de Batalha: Segurança Avançada e Programação Defensiva...
[FISL 16] PHP no Campo de Batalha: Segurança Avançada e Programação Defensiva...Rafael Jaques
 
O futuro do elephante: as promessas do php para 2019
O futuro do elephante: as promessas do php para 2019O futuro do elephante: as promessas do php para 2019
O futuro do elephante: as promessas do php para 2019Cassio Santos
 
Pog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHP
Pog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHPPog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHP
Pog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHPPaulino Michelazzo
 
Php Test Fest PHPMS, Maio 2008
Php Test Fest PHPMS, Maio 2008Php Test Fest PHPMS, Maio 2008
Php Test Fest PHPMS, Maio 2008zehzinho
 
O que esperar do Zend Framework 3
O que esperar do Zend Framework 3O que esperar do Zend Framework 3
O que esperar do Zend Framework 3Flávio Lisboa
 
Introdução ao Python & Web Services
Introdução ao Python & Web ServicesIntrodução ao Python & Web Services
Introdução ao Python & Web ServicesDorneles Treméa
 
PHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta PerformancePHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta PerformanceFelipe Ribeiro
 
O que há de novo no PHP 5.3
O que há de novo no PHP 5.3O que há de novo no PHP 5.3
O que há de novo no PHP 5.3Jose Berardo
 
Mini-curso codeIgniter - aula 1
Mini-curso codeIgniter - aula 1Mini-curso codeIgniter - aula 1
Mini-curso codeIgniter - aula 1lfernandomcj
 
PHPSP TestFest 2010
PHPSP TestFest 2010PHPSP TestFest 2010
PHPSP TestFest 2010Rafael Dohms
 

What's hot (20)

PHP Além da universidade
PHP Além da universidadePHP Além da universidade
PHP Além da universidade
 
PHP na Tela Escura: Aplicações Poderosas em Linha de Comando
PHP na Tela Escura: Aplicações Poderosas em Linha de ComandoPHP na Tela Escura: Aplicações Poderosas em Linha de Comando
PHP na Tela Escura: Aplicações Poderosas em Linha de Comando
 
Otimizando a execução de código-fonte PHP
Otimizando a execução de código-fonte PHPOtimizando a execução de código-fonte PHP
Otimizando a execução de código-fonte PHP
 
Zend Framework 3 - porque só o que existe pode ser aprimorado
Zend Framework 3 - porque só o que existe pode ser aprimoradoZend Framework 3 - porque só o que existe pode ser aprimorado
Zend Framework 3 - porque só o que existe pode ser aprimorado
 
Zend framework 3 Hangout 2016
Zend framework 3 Hangout 2016Zend framework 3 Hangout 2016
Zend framework 3 Hangout 2016
 
Desenvolvendo mvp com python
Desenvolvendo mvp com pythonDesenvolvendo mvp com python
Desenvolvendo mvp com python
 
[FISL 16] PHP no Campo de Batalha: Segurança Avançada e Programação Defensiva...
[FISL 16] PHP no Campo de Batalha: Segurança Avançada e Programação Defensiva...[FISL 16] PHP no Campo de Batalha: Segurança Avançada e Programação Defensiva...
[FISL 16] PHP no Campo de Batalha: Segurança Avançada e Programação Defensiva...
 
O futuro do elephante: as promessas do php para 2019
O futuro do elephante: as promessas do php para 2019O futuro do elephante: as promessas do php para 2019
O futuro do elephante: as promessas do php para 2019
 
Rumo à Certificação PHP
Rumo à Certificação PHPRumo à Certificação PHP
Rumo à Certificação PHP
 
Pog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHP
Pog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHPPog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHP
Pog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHP
 
Como fazer boas libs
Como fazer boas libs Como fazer boas libs
Como fazer boas libs
 
Php Test Fest PHPMS, Maio 2008
Php Test Fest PHPMS, Maio 2008Php Test Fest PHPMS, Maio 2008
Php Test Fest PHPMS, Maio 2008
 
O que esperar do Zend Framework 3
O que esperar do Zend Framework 3O que esperar do Zend Framework 3
O que esperar do Zend Framework 3
 
Brasiliatestfest
BrasiliatestfestBrasiliatestfest
Brasiliatestfest
 
Introdução ao Python & Web Services
Introdução ao Python & Web ServicesIntrodução ao Python & Web Services
Introdução ao Python & Web Services
 
PHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta PerformancePHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta Performance
 
Migrando para PHP7 - Novidades
Migrando para PHP7 - NovidadesMigrando para PHP7 - Novidades
Migrando para PHP7 - Novidades
 
O que há de novo no PHP 5.3
O que há de novo no PHP 5.3O que há de novo no PHP 5.3
O que há de novo no PHP 5.3
 
Mini-curso codeIgniter - aula 1
Mini-curso codeIgniter - aula 1Mini-curso codeIgniter - aula 1
Mini-curso codeIgniter - aula 1
 
PHPSP TestFest 2010
PHPSP TestFest 2010PHPSP TestFest 2010
PHPSP TestFest 2010
 

Viewers also liked

DrupalCamp Campinas 2016 - Auditando performance, conteúdo e boas práticas em...
DrupalCamp Campinas 2016 - Auditando performance, conteúdo e boas práticas em...DrupalCamp Campinas 2016 - Auditando performance, conteúdo e boas práticas em...
DrupalCamp Campinas 2016 - Auditando performance, conteúdo e boas práticas em...Erick Bonnemasou Jaccoud
 
Protegendo Aplicações Php com PHPIDS - Php Conference 2009
Protegendo Aplicações Php com PHPIDS - Php Conference 2009Protegendo Aplicações Php com PHPIDS - Php Conference 2009
Protegendo Aplicações Php com PHPIDS - Php Conference 2009Conviso Application Security
 
Segurança em Aplicações Web
Segurança em Aplicações WebSegurança em Aplicações Web
Segurança em Aplicações WebCassio Ramos
 
OWASP Top 10 - Experiência e Cases com Auditorias Teste de Invasão em Aplicaç...
OWASP Top 10 - Experiência e Cases com Auditorias Teste de Invasão em Aplicaç...OWASP Top 10 - Experiência e Cases com Auditorias Teste de Invasão em Aplicaç...
OWASP Top 10 - Experiência e Cases com Auditorias Teste de Invasão em Aplicaç...Clavis Segurança da Informação
 
Desenvolvendo sistemas seguros com PHP
Desenvolvendo sistemas seguros com PHPDesenvolvendo sistemas seguros com PHP
Desenvolvendo sistemas seguros com PHPFlavio Souza
 
Segurança em PHP - Blinde seu código de você mesmo!
Segurança em PHP - Blinde seu código de você mesmo!Segurança em PHP - Blinde seu código de você mesmo!
Segurança em PHP - Blinde seu código de você mesmo!Gustavo Neves
 
PHP Conference Brasil 2011 - Desenvolvendo Seguro (do rascunho ao deploy)
PHP Conference Brasil 2011 - Desenvolvendo Seguro (do rascunho ao deploy)PHP Conference Brasil 2011 - Desenvolvendo Seguro (do rascunho ao deploy)
PHP Conference Brasil 2011 - Desenvolvendo Seguro (do rascunho ao deploy)Erick Belluci Tedeschi
 

Viewers also liked (9)

DrupalCamp Campinas 2016 - Auditando performance, conteúdo e boas práticas em...
DrupalCamp Campinas 2016 - Auditando performance, conteúdo e boas práticas em...DrupalCamp Campinas 2016 - Auditando performance, conteúdo e boas práticas em...
DrupalCamp Campinas 2016 - Auditando performance, conteúdo e boas práticas em...
 
Protegendo Aplicações Php com PHPIDS - Php Conference 2009
Protegendo Aplicações Php com PHPIDS - Php Conference 2009Protegendo Aplicações Php com PHPIDS - Php Conference 2009
Protegendo Aplicações Php com PHPIDS - Php Conference 2009
 
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com phpTratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
 
Security & PHP
Security & PHPSecurity & PHP
Security & PHP
 
Segurança em Aplicações Web
Segurança em Aplicações WebSegurança em Aplicações Web
Segurança em Aplicações Web
 
OWASP Top 10 - Experiência e Cases com Auditorias Teste de Invasão em Aplicaç...
OWASP Top 10 - Experiência e Cases com Auditorias Teste de Invasão em Aplicaç...OWASP Top 10 - Experiência e Cases com Auditorias Teste de Invasão em Aplicaç...
OWASP Top 10 - Experiência e Cases com Auditorias Teste de Invasão em Aplicaç...
 
Desenvolvendo sistemas seguros com PHP
Desenvolvendo sistemas seguros com PHPDesenvolvendo sistemas seguros com PHP
Desenvolvendo sistemas seguros com PHP
 
Segurança em PHP - Blinde seu código de você mesmo!
Segurança em PHP - Blinde seu código de você mesmo!Segurança em PHP - Blinde seu código de você mesmo!
Segurança em PHP - Blinde seu código de você mesmo!
 
PHP Conference Brasil 2011 - Desenvolvendo Seguro (do rascunho ao deploy)
PHP Conference Brasil 2011 - Desenvolvendo Seguro (do rascunho ao deploy)PHP Conference Brasil 2011 - Desenvolvendo Seguro (do rascunho ao deploy)
PHP Conference Brasil 2011 - Desenvolvendo Seguro (do rascunho ao deploy)
 

Similar to Segurança PHP em 2016

Escrevendo códigos php seguros
Escrevendo códigos php segurosEscrevendo códigos php seguros
Escrevendo códigos php segurosDouglas V. Pasqua
 
Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosRegis Magalhães
 
Da argila ao forte: como desenvolver uma loja com PagSeguro
Da argila ao forte: como desenvolver uma loja com PagSeguroDa argila ao forte: como desenvolver uma loja com PagSeguro
Da argila ao forte: como desenvolver uma loja com PagSeguroMichael Castillo Granados
 
Código legado - PHP Conference Brasil - 2014
Código legado - PHP Conference Brasil - 2014Código legado - PHP Conference Brasil - 2014
Código legado - PHP Conference Brasil - 2014Michael Castillo Granados
 
Aula 02 - Introdução ao PHP - Programação Web
Aula 02  - Introdução ao PHP - Programação WebAula 02  - Introdução ao PHP - Programação Web
Aula 02 - Introdução ao PHP - Programação WebDalton Martins
 
Strings, Arrays e Manipulação Datas em PHP
Strings, Arrays e Manipulação Datas em PHPStrings, Arrays e Manipulação Datas em PHP
Strings, Arrays e Manipulação Datas em PHPDaniel Arndt Alves
 
PHP, mas o que é isso ?
PHP, mas o que é isso ?PHP, mas o que é isso ?
PHP, mas o que é isso ?phpal
 
Simplificando o Javascrip
Simplificando o JavascripSimplificando o Javascrip
Simplificando o JavascripMiquéias Amaro
 

Similar to Segurança PHP em 2016 (20)

Escrevendo códigos php seguros
Escrevendo códigos php segurosEscrevendo códigos php seguros
Escrevendo códigos php seguros
 
Hello SAFE World!!!
Hello SAFE World!!!Hello SAFE World!!!
Hello SAFE World!!!
 
Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passos
 
Php 02 Primeiros Passos
Php 02 Primeiros PassosPhp 02 Primeiros Passos
Php 02 Primeiros Passos
 
Php FrameWARks - sem CakePHP
Php FrameWARks - sem CakePHPPhp FrameWARks - sem CakePHP
Php FrameWARks - sem CakePHP
 
Introducao ao PHP
Introducao ao PHPIntroducao ao PHP
Introducao ao PHP
 
Aula 01 - Curso PHP e MySQL
Aula 01 - Curso PHP e MySQLAula 01 - Curso PHP e MySQL
Aula 01 - Curso PHP e MySQL
 
Pdo do PHP Palestra
Pdo do PHP PalestraPdo do PHP Palestra
Pdo do PHP Palestra
 
Linguagem PHP
Linguagem PHPLinguagem PHP
Linguagem PHP
 
Da argila ao forte: como desenvolver uma loja com PagSeguro
Da argila ao forte: como desenvolver uma loja com PagSeguroDa argila ao forte: como desenvolver uma loja com PagSeguro
Da argila ao forte: como desenvolver uma loja com PagSeguro
 
Código legado - PHP Conference Brasil - 2014
Código legado - PHP Conference Brasil - 2014Código legado - PHP Conference Brasil - 2014
Código legado - PHP Conference Brasil - 2014
 
Aula 02 - Introdução ao PHP - Programação Web
Aula 02  - Introdução ao PHP - Programação WebAula 02  - Introdução ao PHP - Programação Web
Aula 02 - Introdução ao PHP - Programação Web
 
Strings, Arrays e Manipulação Datas em PHP
Strings, Arrays e Manipulação Datas em PHPStrings, Arrays e Manipulação Datas em PHP
Strings, Arrays e Manipulação Datas em PHP
 
Palestra PHPSP+Locaweb 2014 - PDO
Palestra PHPSP+Locaweb 2014 - PDOPalestra PHPSP+Locaweb 2014 - PDO
Palestra PHPSP+Locaweb 2014 - PDO
 
Dependency injection
Dependency injectionDependency injection
Dependency injection
 
PHP GERAL
PHP GERALPHP GERAL
PHP GERAL
 
Mongo + php
Mongo + phpMongo + php
Mongo + php
 
PHP, mas o que é isso ?
PHP, mas o que é isso ?PHP, mas o que é isso ?
PHP, mas o que é isso ?
 
Php 07 Cakephp
Php 07 CakephpPhp 07 Cakephp
Php 07 Cakephp
 
Simplificando o Javascrip
Simplificando o JavascripSimplificando o Javascrip
Simplificando o Javascrip
 

More from Er Galvão Abbott

ABRAPHP: Conquistas e Realizações - 2012-2014
ABRAPHP: Conquistas e Realizações - 2012-2014ABRAPHP: Conquistas e Realizações - 2012-2014
ABRAPHP: Conquistas e Realizações - 2012-2014Er Galvão Abbott
 
Implementing security routines with zf2
Implementing security routines with zf2Implementing security routines with zf2
Implementing security routines with zf2Er Galvão Abbott
 
Desenvolvendo aplicações com ZF2
Desenvolvendo aplicações com ZF2Desenvolvendo aplicações com ZF2
Desenvolvendo aplicações com ZF2Er Galvão Abbott
 
Web: funcionamento, evolução e mercado
Web: funcionamento, evolução e mercadoWeb: funcionamento, evolução e mercado
Web: funcionamento, evolução e mercadoEr Galvão Abbott
 
ZF2 Menor, melhor e mais poderoso
ZF2 Menor, melhor e mais poderosoZF2 Menor, melhor e mais poderoso
ZF2 Menor, melhor e mais poderosoEr Galvão Abbott
 
Implementando rotinas de geolocalização
Implementando rotinas de geolocalizaçãoImplementando rotinas de geolocalização
Implementando rotinas de geolocalizaçãoEr Galvão Abbott
 
OSS, Comunidade, Eventos e como sua empresa ganha com isso
OSS, Comunidade, Eventos e como sua empresa ganha com issoOSS, Comunidade, Eventos e como sua empresa ganha com isso
OSS, Comunidade, Eventos e como sua empresa ganha com issoEr Galvão Abbott
 
OWASP: O que, Por que e Como
OWASP: O que, Por que e ComoOWASP: O que, Por que e Como
OWASP: O que, Por que e ComoEr Galvão Abbott
 
Além da autenticação: Permissões de acesso com Zend Framework
Além da autenticação: Permissões de acesso com Zend FrameworkAlém da autenticação: Permissões de acesso com Zend Framework
Além da autenticação: Permissões de acesso com Zend FrameworkEr Galvão Abbott
 
Proposta de Boas Práticas e Padrões de Desenvolvimento Web
Proposta de Boas Práticas e Padrões de Desenvolvimento WebProposta de Boas Práticas e Padrões de Desenvolvimento Web
Proposta de Boas Práticas e Padrões de Desenvolvimento WebEr Galvão Abbott
 
Preto, Branco e as Sombras de Cinza
Preto, Branco e as Sombras de CinzaPreto, Branco e as Sombras de Cinza
Preto, Branco e as Sombras de CinzaEr Galvão Abbott
 
Implementando Segurança Em Sua Aplicação PHP
Implementando Segurança Em Sua Aplicação PHPImplementando Segurança Em Sua Aplicação PHP
Implementando Segurança Em Sua Aplicação PHPEr Galvão Abbott
 
Prevenindo XSS: Execute apenas o SEU código
Prevenindo XSS: Execute apenas o SEU códigoPrevenindo XSS: Execute apenas o SEU código
Prevenindo XSS: Execute apenas o SEU códigoEr Galvão Abbott
 
PHP e Segurança - Uma união possível
PHP e Segurança - Uma união possívelPHP e Segurança - Uma união possível
PHP e Segurança - Uma união possívelEr Galvão Abbott
 

More from Er Galvão Abbott (20)

PHP e Open Source
PHP e Open SourcePHP e Open Source
PHP e Open Source
 
ABRAPHP: Conquistas e Realizações - 2012-2014
ABRAPHP: Conquistas e Realizações - 2012-2014ABRAPHP: Conquistas e Realizações - 2012-2014
ABRAPHP: Conquistas e Realizações - 2012-2014
 
Implementing security routines with zf2
Implementing security routines with zf2Implementing security routines with zf2
Implementing security routines with zf2
 
Desenvolvendo aplicações com ZF2
Desenvolvendo aplicações com ZF2Desenvolvendo aplicações com ZF2
Desenvolvendo aplicações com ZF2
 
Apresentacao frameworks
Apresentacao frameworksApresentacao frameworks
Apresentacao frameworks
 
Web: funcionamento, evolução e mercado
Web: funcionamento, evolução e mercadoWeb: funcionamento, evolução e mercado
Web: funcionamento, evolução e mercado
 
PHP: Evolução
PHP: EvoluçãoPHP: Evolução
PHP: Evolução
 
ZF2 Menor, melhor e mais poderoso
ZF2 Menor, melhor e mais poderosoZF2 Menor, melhor e mais poderoso
ZF2 Menor, melhor e mais poderoso
 
Implementando rotinas de geolocalização
Implementando rotinas de geolocalizaçãoImplementando rotinas de geolocalização
Implementando rotinas de geolocalização
 
OSS, Comunidade, Eventos e como sua empresa ganha com isso
OSS, Comunidade, Eventos e como sua empresa ganha com issoOSS, Comunidade, Eventos e como sua empresa ganha com isso
OSS, Comunidade, Eventos e como sua empresa ganha com isso
 
OWASP: O que, Por que e Como
OWASP: O que, Por que e ComoOWASP: O que, Por que e Como
OWASP: O que, Por que e Como
 
Além da autenticação: Permissões de acesso com Zend Framework
Além da autenticação: Permissões de acesso com Zend FrameworkAlém da autenticação: Permissões de acesso com Zend Framework
Além da autenticação: Permissões de acesso com Zend Framework
 
Proposta de Boas Práticas e Padrões de Desenvolvimento Web
Proposta de Boas Práticas e Padrões de Desenvolvimento WebProposta de Boas Práticas e Padrões de Desenvolvimento Web
Proposta de Boas Práticas e Padrões de Desenvolvimento Web
 
PHPBR TestFest
PHPBR TestFestPHPBR TestFest
PHPBR TestFest
 
Preto, Branco e as Sombras de Cinza
Preto, Branco e as Sombras de CinzaPreto, Branco e as Sombras de Cinza
Preto, Branco e as Sombras de Cinza
 
Top 10 OWASP com PHP
Top 10 OWASP com PHPTop 10 OWASP com PHP
Top 10 OWASP com PHP
 
Aplicacoes Web Com AJAX
Aplicacoes Web Com AJAXAplicacoes Web Com AJAX
Aplicacoes Web Com AJAX
 
Implementando Segurança Em Sua Aplicação PHP
Implementando Segurança Em Sua Aplicação PHPImplementando Segurança Em Sua Aplicação PHP
Implementando Segurança Em Sua Aplicação PHP
 
Prevenindo XSS: Execute apenas o SEU código
Prevenindo XSS: Execute apenas o SEU códigoPrevenindo XSS: Execute apenas o SEU código
Prevenindo XSS: Execute apenas o SEU código
 
PHP e Segurança - Uma união possível
PHP e Segurança - Uma união possívelPHP e Segurança - Uma união possível
PHP e Segurança - Uma união possível
 

Segurança PHP em 2016

  • 1. Segurança em 2016 Segurança PHP em 2016 www.galvao.eti.br CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 1 / 37
  • 2. Presidente da ABRAPHP – Associação Brasileira de Profissionais PHP Diretor da PHP Conference Brasil Contribui para a tradução da documentação oficial Atua como Zend Framework Evangelist para o ZTeam, da Zend. Professor Especialista de Pós-Graduação UNOESC (SC) e Faculdade Alfa (PR) 20+ anos desenvolvendo sistemas e aplicações com interface web 15+ destes com PHP 7+ com Zend Framework Palestrante em eventos nacionais e internacionais Instrutor de cursos presenciais e a distância Fundador e líder do GU PHPBR Fundador* e membro do GU PHPRS Site: http://www.galvao.eti.br/ http://people.php.net/galvao Twitter: @galvao Slides e Documentos: http://slideshare.net/ergalvao Github: http://github.com/galvao Posts: https://medium.com/@galvao Quem?! CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 2 / 37 www.galvao.eti.brSegurança PHP em 2016
  • 3. Sumário CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 3 / 37 www.galvao.eti.br O status da Segurança PHP em 2016 ● Hashing ● PRNG ● Criptografia ● Banco de Dados ● Tipagem Segurança PHP em 2016
  • 4. Sumário CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 4 / 37 www.galvao.eti.brSegurança PHP em 2016 Tudo se resume a evolução
  • 5. Hashing (Senhas) CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 5 / 37 www.galvao.eti.brSegurança PHP em 2016 md5('my_password'); sha1('my_password'); crypt('my_password', 'my_salt');
  • 6. Hashing (Senhas) CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 6 / 37 www.galvao.eti.br md5('my_password'); sha1('my_password'); crypt('my_password', 'my_salt'); Segurança PHP em 2016
  • 7. Hashing (Senhas) CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 7 / 37 www.galvao.eti.br md5('my_password'); sha1('my_password'); crypt('my_password', 'my_salt'); Segurança PHP em 2016
  • 8. Hashing (Senhas) CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 8 / 37 www.galvao.eti.br <?php $hash = password_hash('my_password', PASSWORD_BCRYPT, ['cost' => 10, 'salt' => 'this_is_my_salt_is_my_salt'] ); Segurança PHP em 2016
  • 9. Hashing (Senhas) CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 9 / 37 www.galvao.eti.br <?php $hash = password_hash('my_password', PASSWORD_BCRYPT, ['cost' => 10, 'salt' => 'this_is_my_salt_is_my_salt'] ); if (password_verify('my_password', $hash)) { // YAY! } Segurança PHP em 2016
  • 10. Hashing (Senhas) CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 10 / 37 www.galvao.eti.br <?php $pass = 'my_password'; $options = ['cost' => 10]; $hash = password_hash($pass, PASSWORD_DEFAULT, $options ); if (password_verify($pass, $hash)) { if (password_needs_rehash($hash, PASSWORD_DEFAULT, $options)) { $newHash = password_hash($pass, PASSWORD_DEFAULT, $options); } } Segurança PHP em 2016
  • 11. Hashing (Senhas) CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 11 / 37 www.galvao.eti.br <?php $pass = 'my_password'; $options = ['cost' => 10]; $hash = password_hash($pass, PASSWORD_DEFAULT, $options ); if (password_verify($pass, $hash)) { if (password_needs_rehash($hash, PASSWORD_DEFAULT, $options)) { $newHash = password_hash($pass, PASSWORD_DEFAULT, $options); } } Segurança PHP em 2016
  • 12. Hashing (Senhas) CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 12 / 37 www.galvao.eti.br <?php $pass = 'my_password'; $options = ['cost' => 10]; $hash = password_hash($pass, PASSWORD_DEFAULT, $options ); if (password_verify($pass, $hash)) { if (password_needs_rehash($hash, PASSWORD_DEFAULT, $options)) { $newHash = password_hash($pass, PASSWORD_DEFAULT, $options); } } Segurança PHP em 2016
  • 13. PRNG CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 13 / 37 www.galvao.eti.br rand($min, $max); mt_rand($min, $max); // Implementação qualquer de randomização // de strings, tipo essa Segurança PHP em 2016
  • 14. PRNG CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 14 / 37 www.galvao.eti.br rand($min, $max); mt_rand($min, $max); // Implementação qualquer de randomização // de strings, tipo essa Segurança PHP em 2016
  • 15. PRNG CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 15 / 37 www.galvao.eti.br rand($min, $max); mt_rand($min, $max); // Implementação qualquer de randomização // de strings, tipo essa Segurança PHP em 2016
  • 16. PRNG CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 16 / 37 www.galvao.eti.brSegurança PHP em 2016 <?php $randomInt = random_int(0, 10);
  • 17. PRNG CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 17 / 37 www.galvao.eti.brSegurança PHP em 2016 <?php $randomInt = random_int(0, 10); $randomStr = random_bytes(22);
  • 18. PRNG CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 18 / 37 www.galvao.eti.brSegurança PHP em 2016 <?php $randomInt = random_int(0, 10); $randomStr = random_bytes(22); echo $randomInt . PHP_EOL; echo base64_encode($randomStr);
  • 19. PRNG CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 19 / 37 www.galvao.eti.brSegurança PHP em 2016 <?php try { $randomInt = random_int(0, 10); echo $randomInt . PHP_EOL; } catch (Exception $e) { die('Lib de randomização não encontrada: ' . $e->getMessage()); } try { $randomStr = random_bytes(22); echo base64_encode($randomStr); } catch (Exception $e) { die('Lib de randomização não encontrada: ' . $e->getMessage()); }
  • 20. PRNG CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 20 / 37 www.galvao.eti.brSegurança PHP em 2016 <?php try { $randomInt = random_int(0, 10); echo $randomInt . PHP_EOL; } catch (Exception $e) { die('Lib de randomização não encontrada: ' . $e->getMessage()); } try { $randomStr = random_bytes(22); echo base64_encode($randomStr); } catch (Exception $e) { die('Lib de randomização não encontrada: ' . $e->getMessage()); }
  • 21. CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 21 / 37 www.galvao.eti.br mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $str, MCRYPT_MODE_CBC, $iv ); mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $crypt, MCRYPT_MODE_CBC, $iv ); Segurança PHP em 2016 Criptografia
  • 22. CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 22 / 37 www.galvao.eti.br mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $str, MCRYPT_MODE_CBC, $iv ); mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $crypt, MCRYPT_MODE_CBC, $iv ); Segurança PHP em 2016 Criptografia
  • 23. CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 23 / 37 www.galvao.eti.br $key = Sodiumrandombytes_buf(SodiumCRYPTO_SECRETBOX_KEYBYTES); $nonce = Sodiumrandombytes_buf(SodiumCRYPTO_SECRETBOX_NONCEBYTES); $ciphertext = Sodiumcrypto_secretbox('test', $nonce, $key); Segurança PHP em 2016 Criptografia $plaintext = Sodiumcrypto_secretbox_open($ciphertext, $nonce, $key);
  • 24. CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 24 / 37 www.galvao.eti.br $crypt = openssl_encrypt('teste', 'blowfish', 'foo', 0, '11122233'); Segurança PHP em 2016 Criptografia $plaintext = openssl_decrypt($crypt, 'blowfish', 'foo', 0, '11122233');
  • 25. CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 25 / 37 www.galvao.eti.brSegurança PHP em 2016 Banco de Dados mysql_*(); Queries com valores diretos; Entre outras coisas...
  • 26. CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 26 / 37 www.galvao.eti.brSegurança PHP em 2016 Banco de Dados mysql_*(); Queries com valores diretos; Entre outras coisas...
  • 27. CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 27 / 37 www.galvao.eti.brSegurança PHP em 2016 Banco de Dados $dsn = 'mysql:dbname=nome_do_banco;host=127.0.0.1'; $user = 'usuario_do_banco'; $password = 'senha_do_banco'; $value = 'ABC' try { $dbh = new PDO($dsn, $user, $password); } catch (PDOException $e) { echo 'Conexão falhou: ' . $e->getMessage(); } $sql = 'SELECT * FROM produto WHERE nome=:clause'; $sth = $dbh->prepare($sql); $sth->bindParam(':clause', $value, PDO::PARAM_STR); $sth->execute(); $red = $sth->fetchAll(); var_dump($red[0]['nome']); $dbh = NULL;
  • 28. CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 28 / 37 www.galvao.eti.brSegurança PHP em 2016 Banco de Dados $dsn = 'mysql:dbname=nome_do_banco;host=127.0.0.1'; $user = 'usuario_do_banco'; $password = 'senha_do_banco'; $value = 'ABC' try { $dbh = new PDO($dsn, $user, $password); } catch (PDOException $e) { echo 'Conexão falhou: ' . $e->getMessage(); } $sql = 'SELECT * FROM produto WHERE nome=:clause'; $sth = $dbh->prepare($sql); $sth->bindParam(':clause', $value, PDO::PARAM_STR); $sth->execute(); $red = $sth->fetchAll(); var_dump($red[0]['nome']); $dbh = NULL;
  • 29. Tipagem CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 29 / 37 www.galvao.eti.br <?php declare(strict_types=1); function foo(int $x, int $y) { return $x + $y; } echo foo('1', 2); Segurança PHP em 2016
  • 30. Tipagem CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 30 / 37 www.galvao.eti.br <?php declare(strict_types=1); function foo(int $x, int $y) { return $x + $y; } echo foo('1', 2); Segurança PHP em 2016 Fatal error: Uncaught TypeError: Argument 1 passed to foo() must be of the type integer, string given, called in /home/vagrant/php7tests/t1.php on line 9 and defined in /home/vagrant/php7tests/t1.php:4 Stack trace: ...
  • 31. CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 31 / 37 www.galvao.eti.brSegurança PHP em 2016 Constantes Nem tudo muda… … ou o que eu quero dizer com “outras coisas”
  • 32. CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 32 / 37 www.galvao.eti.brSegurança PHP em 2016 Constantes Imagem by nixCraft
  • 33. CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 33 / 37 www.galvao.eti.brSegurança PHP em 2016 Constantes Segurança deixa a aplicação lenta? Segurança é difícil de aprender? Segurança é difícil de implementar? A resposta continua sendo a mesma:
  • 34. CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 34 / 37 www.galvao.eti.brSegurança PHP em 2016 Constantes Segurança deixa a aplicação lenta? Segurança é difícil de aprender? Segurança é difícil de implementar? A resposta continua sendo a mesma: NÃO IMPORTA!
  • 35. CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 35 / 37 www.galvao.eti.brSegurança PHP em 2016 Constantes Notegraphy, Galvão
  • 36. INFORME-SE! CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 36 / 37 www.galvao.eti.brSegurança PHP em 2016 Acompanhe as mudanças da linguagem https://wiki.php.net/rfc Usando libsodium com PHP https://paragonie.com/book/pecl-libsodium Pesquise e ESTUDE! https://www.owasp.org/ RTFM!!! http://php.net/manual/en
  • 37. Muito obrigado! CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 5/4/16 - 37 / 37 www.galvao.eti.br ? Dúvidas? ↓ Críticas? ↑ Elogios?! Segurança PHP em 2016