Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

rodrigobhz

Sistema de permissões - segurança e performance

Recommended Posts

Olá!

 

Estou desenvolvendo um sistema e precisei desenvolver uma classe para permissões de acesso a nível de usuário e de grupo de usuários.

 

Está tudo funcionando perfeitamente, mas deixa eu explicar como fiz (uso MySQL): primeiro a classe verifica no banco de dados se o usuário possui permissão para acessar a página. Se 'sim', libera. Se 'não', nega... Se não há regras de permissão para o usuário passa a verificar os grupos de que ele faz parte. Se qualquer grupo possui permissão, libera. Se nenhum possui, nega.

 

Fiquei preocupado com a performance, pois cada vez que uma página do sistema for chamada seria feita essa verificação...

 

Pensei em fazer assim: no primeiro acesso do usuário à página a verificação seria feita no banco de dados, como disse acima. Ai eu armazenaria essa permissão em uma sessão. No segundo acesso eu buscaria a permissão primeiro na sessão e, se não houvesse, buscaria no banco.

 

Minhas dúvidas: o que é melhor, eu manter a verificação como antes, tudo via banco de dados ou posso usar essa idéia da sessão? É seguro? Existe outra forma melhor de se fazer isso?

 

Desde agora, obrigado a todos!

Compartilhar este post


Link para o post
Compartilhar em outros sites

João, obrigado pela resposta mas meu desejo é ir justamente na contramão da sua solução...

 

Minha intenção é justamente minimizar o acesso ao banco de dados para melhorar a performance do sistema... Eu terei umas 30mil usuários/dia acessando das páginas constantemente, então quero reduzir a carga no servidor doe banco e tentar fazer outra coisa, por isso pensei em armazenar as páginas já liberadas em sessão.

 

Ai minha preocupação passou a ser a segurança do processo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Rodrigo, se for trabalhar com MySQL, minha sugestão:

 

1. Utilize o mecanismo que sugeri no post anterior.

2. Garanta a disponibilidade de memcached no servidor.

3. Utilize a engine InnoDB na tabela de controle de acesso.

4. Não acesse a base diretamente, em vez disso, utilize a interface NoSQL para Memcached do InnoDB.

 

:seta: http://dev.mysql.com/doc/refman/5.6/en/innodb-memcached-setup.html

:seta: http://dev.mysql.com/doc/refman/5.6/en/innodb-memcached-internals.html

:seta: http://dev.mysql.com/doc/refman/5.6/en/innodb-memcached-security.html

 

Com isso, além de ter uma modelagem adequada para o controle de acesso, você ainda terá o benefício da escalabilidade provida por um sistema distribuído como Memcached.

 

;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.