desenvolvimento em código seguro para php com zend framework
DESCRIPTION
Palestra proferida no XI FISL em 2010.TRANSCRIPT
![Page 1: Desenvolvimento em Código Seguro para PHP com Zend Framework](https://reader034.vdocuments.net/reader034/viewer/2022051820/55393bca4a79591c7b8b492a/html5/thumbnails/1.jpg)
Desenvolvimento de Código Seguro em PHP com Zend Framework
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
![Page 2: Desenvolvimento em Código Seguro para PHP com Zend Framework](https://reader034.vdocuments.net/reader034/viewer/2022051820/55393bca4a79591c7b8b492a/html5/thumbnails/2.jpg)
Quem sou eu?
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
![Page 3: Desenvolvimento em Código Seguro para PHP com Zend Framework](https://reader034.vdocuments.net/reader034/viewer/2022051820/55393bca4a79591c7b8b492a/html5/thumbnails/3.jpg)
agenda
● Segurança● Poder e responsabilidade● Princípios de Segurança● Toda entrada está contaminada - filtre● Anule efeitos indesejados na saída● Evite ataques CSRF● Segurança entre o banco de dados e aplicação● Autenticação● Autorização
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
![Page 4: Desenvolvimento em Código Seguro para PHP com Zend Framework](https://reader034.vdocuments.net/reader034/viewer/2022051820/55393bca4a79591c7b8b492a/html5/thumbnails/4.jpg)
Segurança
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
Fonte: http://mlpeters.com/The%20Shadow.jpg
QUEM SABE O MAL QUE SE ESCONDE
NO CORAÇÃO DOS HOMENS?
O Sombra é uma marca registrada da DC Comics (http://www.dccomics.com).
![Page 5: Desenvolvimento em Código Seguro para PHP com Zend Framework](https://reader034.vdocuments.net/reader034/viewer/2022051820/55393bca4a79591c7b8b492a/html5/thumbnails/5.jpg)
Segurança
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
Perguntas:
● A segurança é uma opção?
● Podemos ter segurança total?
● Soluções de segurança têm efeito permanente?
● Segurança custa pouco?
![Page 6: Desenvolvimento em Código Seguro para PHP com Zend Framework](https://reader034.vdocuments.net/reader034/viewer/2022051820/55393bca4a79591c7b8b492a/html5/thumbnails/6.jpg)
Segurança
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
Respostas
● A segurança nunca será suficiente.
● A segurança custa caro.
● A segurança não garante nenhum retorno, mas sua falta pode causar prejuízos.
● Sistemas mais seguros = menos amigáveis (e às vezes menos performáticos)
![Page 7: Desenvolvimento em Código Seguro para PHP com Zend Framework](https://reader034.vdocuments.net/reader034/viewer/2022051820/55393bca4a79591c7b8b492a/html5/thumbnails/7.jpg)
Segurança
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
PHP é seguro?
![Page 8: Desenvolvimento em Código Seguro para PHP com Zend Framework](https://reader034.vdocuments.net/reader034/viewer/2022051820/55393bca4a79591c7b8b492a/html5/thumbnails/8.jpg)
Poder e Responsabilidade
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
Hulk é uma marca registrada da Marvel (www.marvel.com). Todos os direitos reservados.
oferece um rico conjunto de ferramentas com imenso
PODERPODER
![Page 9: Desenvolvimento em Código Seguro para PHP com Zend Framework](https://reader034.vdocuments.net/reader034/viewer/2022051820/55393bca4a79591c7b8b492a/html5/thumbnails/9.jpg)
Poder e Responsabilidade
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
PODERPODERque usado com cuidado, serve para criar
aplicações complexas e robustas...
...mas que também pode ser usado por usuários maliciosos para atacar aplicações de diversos modos.
![Page 10: Desenvolvimento em Código Seguro para PHP com Zend Framework](https://reader034.vdocuments.net/reader034/viewer/2022051820/55393bca4a79591c7b8b492a/html5/thumbnails/10.jpg)
Poder e Responsabilidade
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
Fênix e Fênix Negra são marcas registradas da Marvel (www.marvel.com). Todos os direitos reservados.
Ou seja, o HEROI pode se tornar o VILÃO
![Page 11: Desenvolvimento em Código Seguro para PHP com Zend Framework](https://reader034.vdocuments.net/reader034/viewer/2022051820/55393bca4a79591c7b8b492a/html5/thumbnails/11.jpg)
Poder e Responsabilidade
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
A maior vulnerabilidade do PHP
http://faculty.mdc.edu/slewis/Inmates%20and%20Friends_files/Computer%20Nerd.jpg
![Page 12: Desenvolvimento em Código Seguro para PHP com Zend Framework](https://reader034.vdocuments.net/reader034/viewer/2022051820/55393bca4a79591c7b8b492a/html5/thumbnails/12.jpg)
Princípios de Segurança
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
1)A aplicação não sabe onde e quando será atacada.
2)A aplicação só pode se defender de ataques conhecidos.
3)A aplicação tem que vigiar o tempo todo.
4)A aplicação tem que respeitar as regras (a menos que tenha sido feita pelo Batman).
Batman é marca registradas da DC Comics (www.dccomics.com). Todos os direitos reservados.
![Page 13: Desenvolvimento em Código Seguro para PHP com Zend Framework](https://reader034.vdocuments.net/reader034/viewer/2022051820/55393bca4a79591c7b8b492a/html5/thumbnails/13.jpg)
Princípios de Segurança
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
POR OUTRO LADO...
1)O invasor pode escolher o ponto mais fraco.
2)O invasor pode investigar vulnerabilidades desconhecidas.
3)O invasor pode atacar a qualquer momento.
4)O invasor pode jogar sujo.
![Page 14: Desenvolvimento em Código Seguro para PHP com Zend Framework](https://reader034.vdocuments.net/reader034/viewer/2022051820/55393bca4a79591c7b8b492a/html5/thumbnails/14.jpg)
Princípios de Segurança
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
OU SEJA, VOCÊ ESTÁ
NA SEGUINTE SITUAÇÃO:
Duende Verde é marca registradas da Marvel (www.marvel.com). Todos os direitos reservados.
Dilema do DefensorX
Vantagem do Invasor
![Page 15: Desenvolvimento em Código Seguro para PHP com Zend Framework](https://reader034.vdocuments.net/reader034/viewer/2022051820/55393bca4a79591c7b8b492a/html5/thumbnails/15.jpg)
Princípios de Segurança
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
Alguns aspectos para se preocupar:
●Os dados que entram...●Os dados que saem...●O acesso à aplicação...●As permissões para cada recurso...●A manipulação do banco de dados...●E não pára por aí...
![Page 16: Desenvolvimento em Código Seguro para PHP com Zend Framework](https://reader034.vdocuments.net/reader034/viewer/2022051820/55393bca4a79591c7b8b492a/html5/thumbnails/16.jpg)
Princípios de Segurança
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
Conclusão: você precisa de ajuda para implementar segurança nas aplicações
![Page 17: Desenvolvimento em Código Seguro para PHP com Zend Framework](https://reader034.vdocuments.net/reader034/viewer/2022051820/55393bca4a79591c7b8b492a/html5/thumbnails/17.jpg)
Princípios de Segurança
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
Como seria maravilhoso se houvesse algo que ajudasse a tornar minha aplicação PHP mais segura... mas deve ser um sonho...
Imagem da série Head First. O'Reilly Media.
![Page 18: Desenvolvimento em Código Seguro para PHP com Zend Framework](https://reader034.vdocuments.net/reader034/viewer/2022051820/55393bca4a79591c7b8b492a/html5/thumbnails/18.jpg)
Princípios de Segurança
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
Imagem da série Head First. O'Reilly Media.
![Page 19: Desenvolvimento em Código Seguro para PHP com Zend Framework](https://reader034.vdocuments.net/reader034/viewer/2022051820/55393bca4a79591c7b8b492a/html5/thumbnails/19.jpg)
Princípios de Segurança
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
Zend Framework ajuda a lidar com aspectos
de código seguro!
Imagem da série Head First. O'Reilly Media.
![Page 20: Desenvolvimento em Código Seguro para PHP com Zend Framework](https://reader034.vdocuments.net/reader034/viewer/2022051820/55393bca4a79591c7b8b492a/html5/thumbnails/20.jpg)
Princípios de Segurança
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
v
M
CControlador Frontal
HTTP
REQUEST
A segurança começa na aquitetura!
![Page 21: Desenvolvimento em Código Seguro para PHP com Zend Framework](https://reader034.vdocuments.net/reader034/viewer/2022051820/55393bca4a79591c7b8b492a/html5/thumbnails/21.jpg)
Princípios de Segurança
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
A segurança começa na arquitetura!
APLICAÇÃO
CONTROLADOR FRONTAL
CASTELO DE BODIAM, SUSSEX, INGLATERRASéculo XIV
![Page 22: Desenvolvimento em Código Seguro para PHP com Zend Framework](https://reader034.vdocuments.net/reader034/viewer/2022051820/55393bca4a79591c7b8b492a/html5/thumbnails/22.jpg)
Princípios de Segurança
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
Mas isso é suficiente?
Homer Simpson é uma marca registrada do grupo Fox
![Page 23: Desenvolvimento em Código Seguro para PHP com Zend Framework](https://reader034.vdocuments.net/reader034/viewer/2022051820/55393bca4a79591c7b8b492a/html5/thumbnails/23.jpg)
Toda entrada está contaminada - filtre
Motoqueiro Fanstasma é marca registradas da Marvel (www.marvel.com). Todos os direitos reservados.
NEM PENSE EM USAR REGISTER GLOBALS
![Page 24: Desenvolvimento em Código Seguro para PHP com Zend Framework](https://reader034.vdocuments.net/reader034/viewer/2022051820/55393bca4a79591c7b8b492a/html5/thumbnails/24.jpg)
Toda entrada está contaminada - filtre
Fonte: http://img.vivaolinux.com.br/imagens/artigos/comunidade/usuario.jpg
Fonte: http://victorywebproductions.com/images/website1.jpg
![Page 25: Desenvolvimento em Código Seguro para PHP com Zend Framework](https://reader034.vdocuments.net/reader034/viewer/2022051820/55393bca4a79591c7b8b492a/html5/thumbnails/25.jpg)
Toda entrada está contaminada - filtre
Fonte: http://www.weno.com.br/blog/archives/capeta_pintor.gif
Fonte: http://victorywebproductions.com/images/website1.jpg
![Page 26: Desenvolvimento em Código Seguro para PHP com Zend Framework](https://reader034.vdocuments.net/reader034/viewer/2022051820/55393bca4a79591c7b8b492a/html5/thumbnails/26.jpg)
Toda entrada está contaminada - filtre
Fonte: http://www.weno.com.br/blog/archives/capeta_pintor.gif
Fonte: http://victorywebproductions.com/images/website1.jpg
Zend_Filter_Input
![Page 27: Desenvolvimento em Código Seguro para PHP com Zend Framework](https://reader034.vdocuments.net/reader034/viewer/2022051820/55393bca4a79591c7b8b492a/html5/thumbnails/27.jpg)
Anule efeitos indesejados na saída
BANCO DE DADOS
APLICAÇÃO
Fonte: http://1.bp.blogspot.com
![Page 28: Desenvolvimento em Código Seguro para PHP com Zend Framework](https://reader034.vdocuments.net/reader034/viewer/2022051820/55393bca4a79591c7b8b492a/html5/thumbnails/28.jpg)
Anule efeitos indesejados na saída
BANCO DE DADOS
APLICAÇÃO
Fonte: http://www.plurall.com/blogs/roosevelt/wp-content/uploads/2009/08/fake_smile_by_shittyliquor.jpg
![Page 29: Desenvolvimento em Código Seguro para PHP com Zend Framework](https://reader034.vdocuments.net/reader034/viewer/2022051820/55393bca4a79591c7b8b492a/html5/thumbnails/29.jpg)
Anule efeitos indesejados na saída
BANCO DE DADOS
APLICAÇÃO
Fonte 1: http://www.plurall.com/blogs/roosevelt/wp-content/uploads/2009/08/fake_smile_by_shittyliquor.jpg
Fonte 2: http://1.bp.blogspot.com
Zend_View
![Page 30: Desenvolvimento em Código Seguro para PHP com Zend Framework](https://reader034.vdocuments.net/reader034/viewer/2022051820/55393bca4a79591c7b8b492a/html5/thumbnails/30.jpg)
Evite ataques CSRF
![Page 31: Desenvolvimento em Código Seguro para PHP com Zend Framework](https://reader034.vdocuments.net/reader034/viewer/2022051820/55393bca4a79591c7b8b492a/html5/thumbnails/31.jpg)
Evite ataques CSRF
![Page 32: Desenvolvimento em Código Seguro para PHP com Zend Framework](https://reader034.vdocuments.net/reader034/viewer/2022051820/55393bca4a79591c7b8b492a/html5/thumbnails/32.jpg)
Evite ataques CSRF
<form action=”algumacoisa.com/fazer.php”>
![Page 33: Desenvolvimento em Código Seguro para PHP com Zend Framework](https://reader034.vdocuments.net/reader034/viewer/2022051820/55393bca4a79591c7b8b492a/html5/thumbnails/33.jpg)
Evite ataques CSRF
Zend_FormZend_Filter Zend_Validate
![Page 34: Desenvolvimento em Código Seguro para PHP com Zend Framework](https://reader034.vdocuments.net/reader034/viewer/2022051820/55393bca4a79591c7b8b492a/html5/thumbnails/34.jpg)
Segurança entre o banco de dados e a aplicação
![Page 35: Desenvolvimento em Código Seguro para PHP com Zend Framework](https://reader034.vdocuments.net/reader034/viewer/2022051820/55393bca4a79591c7b8b492a/html5/thumbnails/35.jpg)
Segurança entre o banco de dados e a aplicação
http://www.gambiarra.com.br/apagar.php?id=42
$id = $_GET['id'];
$sql = 'DELETE FROM STUDENTS WHERE ID = '.$id;
pg_query($connection, $sql);
![Page 36: Desenvolvimento em Código Seguro para PHP com Zend Framework](https://reader034.vdocuments.net/reader034/viewer/2022051820/55393bca4a79591c7b8b492a/html5/thumbnails/36.jpg)
Segurança entre o banco de dados e a aplicação
http://www.coisacerta.com.br/controller/apagar/id/42
$id = $this->getRequest()->getParam('id');
$table->delete($table->getAdapter()->quoteInto('ID = ?',$id));
![Page 37: Desenvolvimento em Código Seguro para PHP com Zend Framework](https://reader034.vdocuments.net/reader034/viewer/2022051820/55393bca4a79591c7b8b492a/html5/thumbnails/37.jpg)
Segurança entre o banco de dados e a aplicação
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
Shrek é uma marca registrada da Dreamworks (http://www.dreamworksanimation.com). Todos os direitos reservados.
SEGURANÇA É COMO UMA CEBOLA...
![Page 38: Desenvolvimento em Código Seguro para PHP com Zend Framework](https://reader034.vdocuments.net/reader034/viewer/2022051820/55393bca4a79591c7b8b492a/html5/thumbnails/38.jpg)
Segurança entre o banco de dados e a aplicação
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
Plugins podem injetar filtros e validadores
C
![Page 39: Desenvolvimento em Código Seguro para PHP com Zend Framework](https://reader034.vdocuments.net/reader034/viewer/2022051820/55393bca4a79591c7b8b492a/html5/thumbnails/39.jpg)
Autenticação
Autenticar significa verificar se alguém é quem diz ser baseado em uma série de
credenciais.
![Page 40: Desenvolvimento em Código Seguro para PHP com Zend Framework](https://reader034.vdocuments.net/reader034/viewer/2022051820/55393bca4a79591c7b8b492a/html5/thumbnails/40.jpg)
Autenticação
O componente Zend_Auth usa o padrão de projeto Adapter para autenticar contra um tipo particular de serviço de autenticação, tal como:
●LDAP●SGBD●Armazenamento baseado em arquivos
![Page 41: Desenvolvimento em Código Seguro para PHP com Zend Framework](https://reader034.vdocuments.net/reader034/viewer/2022051820/55393bca4a79591c7b8b492a/html5/thumbnails/41.jpg)
Autorização
Autorização é o ato de determinar se alguém tem permissões para executar uma ação sobre
um dado recurso.
![Page 42: Desenvolvimento em Código Seguro para PHP com Zend Framework](https://reader034.vdocuments.net/reader034/viewer/2022051820/55393bca4a79591c7b8b492a/html5/thumbnails/42.jpg)
Autorização
NÃO SE META ONDE NÃO É CHAMADO!
![Page 43: Desenvolvimento em Código Seguro para PHP com Zend Framework](https://reader034.vdocuments.net/reader034/viewer/2022051820/55393bca4a79591c7b8b492a/html5/thumbnails/43.jpg)
Autorização
RBAC – Role Based Access Control
►Papéis: quem solicita a ação;►Recursos: o que está sendo ativado;►Direitos: os privilégios que um papel tem para um dado recurso.
![Page 44: Desenvolvimento em Código Seguro para PHP com Zend Framework](https://reader034.vdocuments.net/reader034/viewer/2022051820/55393bca4a79591c7b8b492a/html5/thumbnails/44.jpg)
Autorização
Para papéis, o ZF tem Zend_Acl_Role.Para recursos, ele tem Zend_Acl_Resource.
Os direitos são controlados pelo componente integrador Zend_Acl.
Zend_Acl trabalha por padrão com o conceito de lista branca: se nada for especificado, o acesso
ao recurso é negado.
![Page 45: Desenvolvimento em Código Seguro para PHP com Zend Framework](https://reader034.vdocuments.net/reader034/viewer/2022051820/55393bca4a79591c7b8b492a/html5/thumbnails/45.jpg)
Autorização
Você pode trabalhar com lista negra, mas é menos comum e menos seguro.
![Page 47: Desenvolvimento em Código Seguro para PHP com Zend Framework](https://reader034.vdocuments.net/reader034/viewer/2022051820/55393bca4a79591c7b8b492a/html5/thumbnails/47.jpg)
MUITO OBRIGADO!
![Page 48: Desenvolvimento em Código Seguro para PHP com Zend Framework](https://reader034.vdocuments.net/reader034/viewer/2022051820/55393bca4a79591c7b8b492a/html5/thumbnails/48.jpg)
Mais informações
● Zend Framework website http://framework.zend.com
● Zend Developer Zone http://devzone.zend.com
● ZFTutorials forum http://www.zftutorials.com
● Blogs
● Matthew Weier O'Phinney: http://weierophinney.net/matthew
● Cal Evans: http://blog.calevans.com
● Andries Seutens: http://andries.systray.be/blog
● Rob Allen: http://akrabat.com
● Zend Framework Brasil
● http://www.zfbrasil.com
● http://groups.google.com/group/zfbrasil