3. 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.
4. Segurança
QUEM SABE O MAL
QUE SE ESCONDE
NO CORAÇÃO
DOS HOMENS?
O Sombra é uma marca registrada da DC Comics (http://www.dccomics.com).
Fonte: http://mlpeters.com/The%20Shadow.jpg
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
5. Segurança
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?
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
6. Segurança
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)
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
7. Segurança
PHP é seguro?
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
8. Poder e Responsabilidade
oferece um rico conjunto de ferramentas com imenso
PODER
Hulk é uma marca registrada da Marvel (www.marvel.com). Todos os direitos reservados.
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
9. Poder e Responsabilidade
PODER
que 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.
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
10. Poder e Responsabilidade
Ou seja, o HEROI pode se tornar o VILÃO
Fênix e Fênix Negra são marcas registradas da Marvel (www.marvel.com). Todos os direitos reservados.
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
11. Poder e Responsabilidade
A maior vulnerabilidade do PHP
http://faculty.mdc.edu/slewis/Inmates%20and%20Friends_files/Computer%20Nerd.jpg
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
12. Princípios de Segurança
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.
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
13. Princípios de Segurança
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.
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
14. Princípios de Segurança
OU SEJA, VOCÊ ESTÁ
NA SEGUINTE SITUAÇÃO:
Dilema do Defensor
X
Vantagem do Invasor
Duende Verde é marca registradas da Marvel (www.marvel.com). Todos os direitos reservados.
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
15. Princípios de Segurança
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í...
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
16. Princípios de Segurança
Conclusão: você precisa de ajuda para
implementar segurança nas aplicações
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
17. Princípios de Segurança
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.
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
18. Princípios de Segurança
Imagem da série Head First. O'Reilly Media.
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
19. Princípios de Segurança
Zend
Framework
ajuda a lidar
com aspectos
de código
seguro!
Imagem da série Head First. O'Reilly Media.
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
20. Princípios de Segurança
A segurança começa na aquitetura!
HTTP
REQUEST
Controlador
Frontal C v
M
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
21. CONTROLADOR FRONTAL
Princípios de Segurança
A segurança começa na arquitetura!
APLICAÇÃO
CASTELO DE BODIAM, SUSSEX, INGLATERRA
Século XIV
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
22. Princípios de Segurança
Mas isso é suficiente?
Homer Simpson é uma marca registrada do grupo Fox
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
23. Toda entrada está contaminada -
filtre
Motoqueiro Fanstasma é marca registradas da Marvel (www.marvel.com). Todos os direitos reservados.
NEM PENSE EM USAR REGISTER GLOBALS
24. Toda entrada está contaminada -
filtre
Fonte: http://victorywebproductions.com/images/website1.jpg
Fonte: http://img.vivaolinux.com.br/imagens/artigos/comunidade/usuario.jpg
25. Toda entrada está contaminada -
filtre
Fonte: http://victorywebproductions.com/images/website1.jpg
Fonte: http://www.weno.com.br/blog/archives/capeta_pintor.gif
26. Toda entrada está contaminada -
filtre
Fonte: http://victorywebproductions.com/images/website1.jpg
Fonte: http://www.weno.com.br/blog/archives/capeta_pintor.gif
Zend_Filter_Input
28. Anule efeitos indesejados na saída
APLICAÇÃO
BANCO DE DADOS
Fonte: http://www.plurall.com/blogs/roosevelt/wp-content/uploads/2009/08/fake_smile_by_shittyliquor.jpg
29. Anule efeitos indesejados na saída
APLICAÇÃO
Zend_View
BANCO DE DADOS
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
35. 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);
36. 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));
37. Segurança entre o banco de dados
e a aplicação
SEGURANÇA É COMO UMA CEBOLA...
Shrek é uma marca registrada da Dreamworks (http://www.dreamworksanimation.com). Todos os direitos reservados.
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
38. Segurança entre o banco de dados
e a aplicação
Plugins podem injetar filtros e validadores
C
www.fgsl.eti.br. É livre a reprodução, desde que citada a fonte.
40. 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
41. Autorização
Autorização é o ato de determinar se alguém
tem permissões para executar uma ação sobre
um dado recurso.
43. 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.
44. 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.