Esta apresentação tem por objetivo apresentar a criação de Listas de Controle de
Acesso (ACLs) de forma a incrementar a segurança de websites e aplicações com interface
web. Serão apresentados conceitos e exemplos prátcos de código, utlizando o Zend
Framework como plataforma para a criação e implementação destas permissões de acesso.
Além da autenticação: Permissões de acesso com Zend Framework
1. Além da Autenticação:
Permissões de Acesso
com Zend Framework
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott – 2010-08-05 – 1 / 25
2. Créditos
Sobre o Autor:
Er Galvão Abbott trabalha há mais de 15 anos
desenvolvendo sistemas e aplicações com interface web.
Palestra em eventos, dá cursos em diversas instituições e
é o Diretor da PHP Conference Brasil, o principal evento de
PHP da América Latina.
Especializou-se em segurança de aplicações web,
abordando o tema em uma época quando isso ainda era raro
no Brasil.
Site: http://www.galvao.eti.br/
Twitter: @galvao
Slides e Documentos: http://slideshare.net/ergalvao
Imagens:
Zend Framework Logo – http://framework.zend.com/
Oxygen Iconset – http://www.oxygen-icons.org/
Minhas terríveis habilidades de Design
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott – 2010-11-23 – 2 / 25
3. Objetivo
Esta apresentação tem por objetivo apresentar a criação de Listas de Controle de
Acesso (ACLs) de forma a incrementar a segurança de websites e aplicações com interface
web. Serão apresentados conceitos e exemplos prátcos de código, utlizando o Zend
Framework como plataforma para a criação e implementação destas permissões de acesso.
Serão apresentados os seguintes tópicos:
● O que são permissões de acesso
● Vantagens e Desvantagens
● Zend Framework / Zend_ACL – Por que usar?
● Resources, Roles e Privileges
● Automatizando o controle de acesso
● Atrelando Zend_ACL com Controllers e Actions
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott – 2011-08-05 – 3 / 25
4. O que são permissões de acesso
São, basicamente, regras de acesso que definem se um usuário, após a
autenticação, tem ou não permissão para realizar ações específicas em partes
específicas de um website ou aplicação web.
Vantagens
● Incremento na segurança
● Definição a nível de Role e não de nome de usuário específico
● Alto nível de generalização
● Fácil implementação de novos Resources, Roles e Privileges
● Implementação de novas features restritas a beta testers
Desvantagens
● Alto nível de complexidade de desenvolvimento
● Médio/Alto nível de planejamento
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott – 2011-08-05 – 4 / 25
5. Zend Framework / Zend_Acl – Por que usar?
Como todo o Framework, uma das grandes vantagens do Zend é
justamente facilitar tarefas complexas de desenvolvimento, entre elas a
implementação de ACLs:
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott – 2011-08-05 – 5 / 25
6. Zend Framework / Zend_Acl – Por que usar?
Principais vantagens do uso do componente Zend_Acl
● Alto nível de generalização: Resources, por exemplo, podem ser Controllers
(“default”), Models, etc...
● Herança entre Roles
● Permite desde a implementação de uma ACL simples a uma mais avançada,
através de Assertions
● Facilmente extensível: novos resources, roles e privileges podem ser
implementados pela edição de código ou mesmo dinamicamente.
Principais desvantagens do uso do componente Zend_Acl
● Curva inicial de aprendizado média, devido a problemas de documentação
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott – 2011-08-05 – 6 / 25
7. Resources, Roles e Privileges
Resources (Recursos) são objetos cujo acesso é controlado.
Roles (Papéis) são objetos que podem tentar acessar um resource.
Privileges (Privilégios) são regras especiais de acesso a um resource.
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott – 2011-08-05 – 7 / 25
8. Usuários tem Roles
Guest (usuários não autenticados)
User (usuários autenticados)
Admin (Administradores autenticados)
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott – 2011-08-05 – 8 / 25
9. Roles acessam Resources, opcionalmente com Privileges
Home
Guest
Produtos (index)
User
Produtos /
Visualizar
Produtos /
Admin Editar
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott – 2011-08-05 – 9 / 25
10. Roles acessam Resources, opcionalmente com Privileges
Home
Guest
Produtos (index)
User
Produtos /
Visualizar
Produtos /
Admin Editar
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott – 2011-08-05 – 10 / 25
11. Roles acessam Resources, opcionalmente com Privileges
Home
Guest
Produtos (index)
User
Produtos /
Visualizar
Produtos /
Admin Editar
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott – 2011-08-05 – 11 / 25
12. Roles acessam Resources, opcionalmente com Privileges
Home
Guest
Produtos (index)
User
Produtos /
Visualizar
Produtos /
Admin Editar
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott – 2011-08-05 – 12 / 25
13. Roles acessam Resources, opcionalmente com Privileges
Home
Guest
Produtos (index)
User
Produtos /
Visualizar
Produtos /
Admin Editar
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott – 2011-08-05 – 13 / 25
14. Roles acessam Resources, opcionalmente com Privileges
Home
Guest
Produtos (index)
User
Produtos /
Visualizar
Produtos /
Admin Editar
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott – 2011-08-05 – 14 / 25
15. Roles acessam Resources, opcionalmente com Privileges
Home
Guest
Produtos (index)
User
Produtos /
Visualizar
Produtos /
Admin Editar
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott – 2011-08-05 – 15 / 25
16. Roles acessam Resources, opcionalmente com Privileges
Home
Guest
Produtos (index)
User
Produtos /
Visualizar
Produtos /
Admin Editar
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott – 2011-08-05 – 16 / 25
17. Roles acessam Resources, opcionalmente com Privileges
Home
Guest
Produtos (index)
User
Produtos /
Visualizar
Produtos /
Admin Editar
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott – 2011-08-05 – 17 / 25
18. Roles acessam Resources, opcionalmente com Privileges
Home
Guest
Produtos (index)
User
Produtos /
Visualizar
Produtos /
Admin Editar
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott – 2011-08-05 – 18 / 25
19. Roles acessam Resources, opcionalmente com Privileges
Home
Guest
Produtos (index)
User
Produtos /
Visualizar
Produtos /
Admin Editar
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott – 2011-08-05 – 19 / 25
20. Bootstrapping ACLs – Parte 1
application/Bootstrap.php
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott – 2011-08-05 – 20 / 25
21. Bootstrapping ACLs – Parte 2
application/Bootstrap.php
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott – 2011-08-05 – 21 / 25
22. Resources → Controllers
application/plugins/ACL.php
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott – 2011-08-05 – 22 / 25
23. Resources → Controllers, Privileges → Actions
application/plugins/ACL.php
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott – 2011-08-05 – 23 / 25
24. Finalizando a automação: Registrando Plugins
application/Bootsrap.php
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott – 2011-08-05 – 24 / 25
25. OBRIGADO!
Dúvidas?
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott – 2011-08-05 – 25 / 25