Segurança máxima, usando o OPEN

Dois focos de segurança você deve ter em mente: um é a segurança dos dados e o outro é a segurança do aplicativo.    

A segurança do aplicativo é relativamente simples de se resolver: basta convertê-lo para a extensão ACCDE, que o oponente não terá acesso aos códigos desenvolvidos por você.

A questão da segurança dos dados é que torna-se uma dor de cabeça. 

Até a versão do Access 2003, a senha simples de acesso ao aplicativo é facilmente descoberta por programas de terceiros, que você acha facilmente aí pela pesquisa do Google.  Portanto, não servindo como proteção eficaz.

Já na versão do Access 2007/2010 , esta senha simples é considerada extremamente segura, portanto um ponto muito forte a nosso favor.   Mas, apesar de sua eficácia, existem falhas no seu emprego. Uma delas é o fato de você ter que passar a senha ao usuário para ele ter acesso ao aplicativo – Ora, se você tem que revelar a senha ao usuário , abre-se aí uma brecha na segurança.

O que se costuma fazer então, na prática, é dividir o  banco de dados em dois– um contendo apenas as tabelas, chamado de back-end e um outro contendo todos os objetos restantes, como formulários e relatórios, e que é chamado de front-end.   Ligamos então o front-end ao back-end através de programação e/ou através do que chamamos de vinculação, tornando os dois bancos como se fossem um único aplicativo.  Esta também é a maneira mais empregada para o uso em REDE.

Podemos então criar uma senha simples para o back-end (tabelas), sem contudo precisar ser revelada ao usuário, já que ele estará acessando o aplicativo apenas pelo front-end

Quando você estiver configurando a ligação entre os dois bancos, seja ela por programação ou por vinculação, terá que informar a senha do back-end no processo.    Quando se faz isso por programação, não há risco algum desta senha ser descoberta, desde que você transforme seu aplicativo (front-end) para a extensão ACCDE (códigos protegidos).   Porém, quando se faz a ligação por vinculação, abre-se uma brecha enorme na segurança desta senha simples do back-end (você verá como, no vídeo apresentado).  

Muitos programadores, cientes deste fato, preferem optar em fazer a conexão do back-end por programação, mas isso traz uma enorme prejuízo no quesito tempo, pois haverá um acréscimo substancial de programação.  Eu, particularmente, não uso deste artifício em projetos grandes, pois preciso muito otimizar meu tempo.  Um projeto que preferi configurar por programação, pois não tinha muitas tabelas, foi o MontaRibbons, que eu ofereço aqui no site.

Então qual é o problema na vinculação ?

O problema é que as tabelas autenticadas automaticamente pela vinculação estarão disponíveis livremente pelo seu front-end.  Se nada for feito para impedir o acesso aos vínculos criados no front-end , o oponente terá acesso livre, não só aos dados, como também irá conseguir obter a senha do seu back-end que está gravada (sem qualquer proteção) nos vínculos – um absurdo!

O que fazer então?

A situação poderá ser amenizada, criando-se uma senha simples também para o front-end.  Mas cairemos na mesma situação inicial, de que esta senha de acesso deverá ser revelada para o usuário.  Pelo menos estaremos aí reduzindo o risco a zero, caso o oponente furte o banco sem a senha do usuário.

Um outro entrave que acontece com esta senha simples no front-end é o fato de termos que criar para maioria dos aplicativos, uma programação de segurança a nível de usuário, que força a gente a abrir um formulário na inicialização, solicitando nome e senha de usuário.  Ora, então o usuário terá que autenticar duas senhas para entrar no front-end:  uma de acesso global ao programa e a outra de acesso restrito ao usuário. Isso acaba não sendo funcional! Adivinhe só qual das senhas eu costumava descartar?

Não conformado com esta situação de risco , consegui elaborar um banco auxiliar, que chamo de OPEN e que faz automaticamente essa autenticação da senha simples para o front-end. 

Matei assim dois coelhos: não revelar as senhas do back-end e front-end para o usuário e não conflitar com a abertura do formulário de senha, a nível de usuário. 

O OPEN e a extensão ACCDR

ACCDR é uma nova extensão de arquivo que permite a abertura de um banco de dados em modo de tempo de execução.  Ao fazer a alteração da extensão do arquivo de ACCDB para ACCDR, você estará criando  uma versão "bloqueada".  

O modo de tempo de execução é um modo operacional  que desativa o Painel de navegação, a Faixa de opções, o Modo de design, o Modo de layout e a Ajuda.

O OPEN foi configurado para rodar o front-end apenas na extensão ACCDR, proporcionando um nível de segurança, sem qualquer programação adicional, que necessitaria ser feita se tivesse em outra extensão.   Assista o vídeo e você entenderá perfeitamente como isso funciona

Consegui gerar um nível de segurança tão bom com o OPEN, que estou utilizando em alguns dos meus clientes, os bancos em ACCDB (facilitando meus reparos no local) convertidos em ACCDR.

Neste vídeo você verá:

Como dividir seu banco de dados em back-end e front-end.
Como configurar senha simples.
Como capturar a senha do back-end pelo front-end sem proteção.
Como se proteger de keyloggers

Como configurar o OPEN para o seu projeto.
Como gerar senha para o próprio OPEN, se não utilizar senha a nível de usuário.

O arquivo

Baixe o arquivo Open.zip abaixo, que contém dois aplicativos: O Open.accdr e o SenhaOpen.accdr

 

 

Como EXIBIR a vídeo-aula em tela cheia?

1. clique na seta executar da tela abaixo para iniciar a exibição do vídeo;

2. dê dois cliques rápidos na tela, quando o vídeo começar a ser exibido.

 

 


41 comentários

MSampaio   25/11/2009 14:12:14

Avelino, mais uma vez parabens.
Seu site esta se tornando uma verdadeira escola de access, quem não acessa esta perdendo e muito.

Muito obrigado por mais esta grande aula.

manoel alipio b costa   26/11/2009 01:34:24

Avelino vc é o cara mesmo, quanto ficaria para vc me mandar as video aulas + o programa ribbons para o cep 76820-624 em porto velho -rondonia( me manda um e-mail com o valor para ( alipio@ronsegseguros.com.br) deixa eu te perguntar , vc ja fez algum aplicativo para corretora de seguros?

Maurício Mendes   28/11/2009 17:05:48

Adorei essa aula, ainda não tinha visto nada assim. vc é o maximo.

Avelino Sampaio   30/11/2009 11:23:53

Manoel, respondi pelo seu email

Marcelo e Maurício, fico muito feliz com os comentários.

Anote aí no caderninho de vocês. 2010 será o ano deste site, com muito mais vídeo aulas e exemplos.

Sucesso

Vítor José de Paula    30/11/2009 16:38:40

Prezado Avelino;
Primeiramente agradecer por dividir seu conhecimento conosco.
Segundo parabenizá-lo por desenvolver ferramentas muito bem elaboradas, criativas que contribui em muito com os desenvolvedores.
Terceiro dizer que foi uma surpresa gratificante algumas vulnerabilidades apresentadas por você que vai nos ajudar muito a proteger nossos softwares e as informações dos clientes.
Me mande um email depois com orçamento de quanto cobraria por um cd contendo tudo sobre ribons com alguns exemplos práticos.
Grande abraço; que Deus lhe retribua com muita saúde e sucesso.


Nikolas   1/1/2010 17:43:44

Realmente, todas as dicas e video aulas são de grande ajuda para o desenvolvimento de sistemas em access, desenvolvo sistemas em access há muitos anos e realmente vc esta de parabéns Avelino.

Plinio Marcos   23/1/2010 10:36:59

Grande Avelino

Seus tutoriais e vídeo-aulas estão o máximo, porém esta idéia do Open foi magnífica. Parabéns mesmo pela grandiosidade dos aplicativos e dos artigos.

Avelino Sampaio   26/1/2010 08:00:59

Vitor, Nikolas e Plinio

É um prazer ver vocês por aqui e obrigado pela força.

Sucesso

Rejane   31/1/2010 01:48:49

Gostaria de trocar email contigo.
Tenho muitas duvidas de como transformar um programa do access em multiusuário.
Favor fazer contato
mariaberger@ig.com.br

José Mendes   10/3/2010 07:49:53

Olá bom dia Avelino,

Tentei implementar exemplo mas não consegui.

Corri o setup do open

Corri como run o open e ele pede a senha.

Manoel Santos   21/4/2010 12:54:15

Olá Avelino, parabéns pelo site, está ótimo!
Tentei executar o exemplo do setup open para o arquivo maestro e ele pede senha.
Detalhe: Ao abrir o arquivo zipado "tuto 9" ele gera 2 files: maestro.accdb e maestro_be.accdb. Pergunta: Eu devo converter um desses arquivos para "accdr" antes de rodar o setup do open?

Grato!

Avelino Sampaio   21/4/2010 18:33:23

Manoel Santos,

Crie uma senha para o maestro.accdb
Passe o maestro.accdb para maestro.accdr
maestro_be.accdb e o arquivo que comtém as tabelas (back-end). sua senha de acesso: a1234

Sucesso

Gilberto   29/4/2010 22:53:15

?Uma perguntinha, desenvolvi meu sistema em access 2007 com sp2 e estou usando o open, que achei exelente (Parabens). Esse sistema rodara com o Access runtime somente? o Access Runtime ja tem a atualização SP2?

Avelino Sampaio   30/4/2010 04:53:12

Gilberto,

O Access runtime já tem o Sp2. Copie e cole no seu navegador o link abaixo para realizar o download.

http://www.microsoft.com/downloads/details.aspx?FamilyID=6f4edeed-d83f-4c31-ae67-458ae365d420&DisplayLang=pt-br

O Open funciona no Access completo e no Access runtime

Sucesso

Gilberto   30/4/2010 11:28:53

Obrigado pelo retorno Avelino, é que eu estava preocupado em disponibilizar meu sistema e o cliente não ter o Office 2007 instalado, sendo assim vou mandar o inno fazer a instalação do runtime.

Muito obrigado mesmo e muito sucesso para vc.

Avelino Sampaio   30/4/2010 14:43:39

Gilberto,

Isso não tira vc de: testar , testar e testar

Não esqueça que o runtime tem também a questão da macro de segurança. No inno vc tem que criar o local seguro, configurado no registro do Windows.

O Access 2010 também já tem o Runtime. Simplesmente gigantesco.

Sucesso

Luciano   5/5/2010 17:07:59

Avelino,
Parabéns pelo excelente vídeo.
Há a possibilidade de usar o Open em um BD na versão 2003?
Grato.

Avelino Sampaio   5/5/2010 18:33:47

Luciano,

não, porque a senha simples do Access 2003 é fácil de ser descoberta.

Sucesso

JACKSON   14/5/2010 18:55:37

Legal...ótimo site

Gilberto   17/5/2010 16:00:37

Boa tarde Avelino.

Estou usando o Open e gostei d+, mas estou com uma duvida.
Eu uso uma senha com 8 caracteres e tentei adicionar uma senha com 15 caracteres mas ao abrir o access diz que a senha esta incorreta, mas eu abrindo o db direto e colocando a senha não tenho problemas.
O open tem limite de tamanho de senha?

Um grande abraço!!

Avelino Sampaio   18/5/2010 06:01:43

Jackson.

obrigado pelo seu apoio.

Gilberto,

De fato existe uma limitação de 11 caracteres. Na próxima versão irei corrigir este bug.

Grato pela sua colaboração.


Gilberto   25/5/2010 16:33:44

Ok, obrigado pelo retorno Avelino, e quando atualizar o open nos avise ok?
Abs

Moises   26/5/2010 03:10:22

Ola Avelino! Tudo bem? Apesar de achar suas instruções excelentes, não consegui configurar o Open com meu projeto de banco de dados!
Se puder me enviar mais explicações fico muito grato.
Abração

Avelino Sampaio   26/5/2010 15:26:35

Moises,

Me passe , pelo link contato, uma explicação mais detalhada, para eu poder te ajudar.

no aguardo

paulo gesse   10/6/2010 22:19:04

Quero abrir um banco de dados partindo de outro, usando a função Createobject, mas não funcionou no tal Runtime. Você sabe qual a extensão para run-time? No run-time gera um erro porque ele não reconhece . Funciona bem na máquina com Access. Isto se aplica a uma grande empresa com windows 2007 instalado, sem possiblilidade de instalar versões novas, como SP2.

VEJA MINHA INSTRUÇÁO:
Dim objAccess As Object
Set objAccess = CreateObject("Access.Application")
With objAccess
.Visible = True
.OpenCurrentDatabase "C:\\PLANILHA TESTE.accdb", False, "MINHASENHA"
.DoCmd.OpenForm "abertura"
.Forms!abertura!USUÁRIO = "paulo"
End With



Avelino Sampaio   11/6/2010 06:11:07

Paulo,

No runtime ele realmente não vai funcionar.

Acesse o endereço abaixo e leia o tópico até o final. Pode te ajudar numa solução.

http://www.expertaccess.com.br/forumnew/forum_posts.asp?TID=21421&KW=sendkeys&PN=1

Sucesso

Gilberto   14/6/2010 14:15:18

Grande Avelino, estou com uma dúvida, se vc puder me ajudar, lhe agradeço muito.
Estou usando o Open, ele abre o front end com senha, mas e se eu colocar senha no back end ele abre tambem? Se não, como abro o be com senha, ja que minhas tabelas estão com ligação por vinculação?
grande abraço.

Avelino Sampaio   15/6/2010 04:43:09

Gilberto,

O Open só serve para abrir o front-end. O back-end é gerenciado pelo próprio front-end. Tem um artigo no site que trata da questão de revinculação (com ou sem senha), se for este o caso.

Pelo link "contato" me passe mais detalhes, pois posso não ter entendido a sua dúvida.

Sucesso

Gilberto   15/6/2010 08:13:32

É isso mesmo Avelino, acho que resolvi pelo seu arquivo de revinculação com senha.
Mas por duvida, como abrir o back end com senha, sem usar a revinculação de tabelas?

Grande abraço, e tudo de bom para vc.

Eder   22/6/2010 14:59:42

Avelino parabens realmente você superou tudo quanto ja vi em instrução em access.

Tenho varios aplicativos em access mas tenho muitas duvidas;

1º Como faço para abrir meu aplicativo sem aparecer a janela do access.

2º Como posso colocar o icone do meu aplicativo no menu iniciar do windows.

Valeu

Avelino Sampaio   23/6/2010 06:09:42

Eder,

1º Isso é feito através de API. Procure no google com a frase "apiShowWindow access 2007" que irá encontrar o código desejado. Nunca usei.

2º Procure no google pela palavra "CreateShortcut" ou acesse o link abaixo
http://comunidade.itlab.com.br/eve/forums/a/tpc/f/364609431/m/871101796?r=871101796#871101796

Sucesso

Eder   24/6/2010 12:16:40

Avelino muito obrigado, realmente estamos muito feliz não apenas pelo seu site e as intruções contidas nele mas também pelas respostas q vc tem dado a todos aqui neste site.

Grato sucesso.

Eder   24/6/2010 12:27:09

Avelino estou com um probleminha aqui não consigo entrar no setup do open, quando mando o atalho para a area de trabalho e vou alterar o nome do aquivo para entrar no setup o windows não aceita o meu windows é o xp.

Grato

Avelino Sampaio   25/6/2010 06:39:34

Eder,

qual é a mensagem que o windows fornece?

Você está colocando o X(chamada de macro) na linha de comando? exemplo:
... /X setup

No aguardo

Sandrina   25/6/2010 08:21:51

Boa tarde Sr. Avelino,

uma dúvida: é possível que o open não funcione com o Windows 7? Porque penso estar a fazer tudo bem, mas continua a pedir-me a password.

Muito obrigada

Eder   25/6/2010 10:24:40

Aveline muito obrigado pela resposta mas ainda esta dendo um erro gostaria de estar mandando para vc um programa de exemplo onde eu uso o arquivo de tabelas vinculadas vc teria um email onde eu posso estar me comunicando com vc.
o meu é hermomsolucoes@hotmail.com

Avelino Sampaio   26/6/2010 14:18:19

Eder,

Já te passei um email

Sandrina,

Clique no link "contato" e me passe mais detalhes que eu te responderei pelo email.

Eder   30/6/2010 18:04:20

Avelino muito agradecido pela resposta, mas ocorreu um problema aq qnão chegou o email se possivel me manda novamente estou no aguardo grato.

Eder   7/7/2010 19:24:41

Avelino Boa noite gostaria de saber se vc conseguiu verificar meu email com os anexos.

Grato.

Marcos Dias   27/7/2010 22:24:39

Precisamos de um Curso Completo de Access 2007/2010 de sua autoria.

Marcio de Lima   29/7/2010 15:48:00

Avelino, faço todos os passos do video, pois na hora que clico no front-end para q ele me dê a opção de colocar a senha do back-end na linha de comando, apenas apare senha errada e não aparece a áera para eu depurar e colocar o password do back-end, sabe pq?? ou tem outro caminho para colocar a senha do back-end?


Envie seu comentário: