MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    [Resolvido]Segurança - Não permitir cópia de tabelas

    Compartilhe

    RJBeto
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3
    Registrado : 02/09/2017

    [Resolvido]Segurança - Não permitir cópia de tabelas

    Mensagem  RJBeto em 2/9/2017, 17:58

    Boa tarde

    Estou com um Banco de Dados em Acces de uso em rede para multi-usuários com definições de acesso para cada tipo de usuário.

    O que fiz foi o seguinte:

    Dividi em duas bases, onde o que fica para o uso está com tabelas vinculadas do Banco Principal, que está escondido em outro local da rede.

    Coloquei uma senha para acesso ao banco de dados e um formulário de entrada (definido nas opções do banco como formulário de exibição) que em função de uma senha individual dá acesso à difentes formulários em função de seu perfil. Ao passar pelo formulário de entrada automaticamente a função Shift+Enter é desabilitada e só é habilitada quando é clicado em um local da tela que somente eu sei onde fica.

    Entretanto, percebo que mesmo com a techa Shift+Enter desabilitada, é possível abrir um novo Banco e através dele copiar as tabelas, fazer qualquer alteração e voltar com ela modificada em sua estrutura ou dados para o meu Banco de origem.

    Como posso bloquer a cópia de tabelas do meu Banco para um outro Banco?

    Tentei usar uma autoexec com SendKeys enviando a senha do Banco para que não fosse necessário a sua digitação e somente eu a pudesse conhecer. Mas... o SendKeys com a senha só entra depois de acessado o Banco e vai direto para o formulário de acesso individual.

    Grato
    avatar
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 5550
    Registrado : 15/03/2013

    Re: [Resolvido]Segurança - Não permitir cópia de tabelas

    Mensagem  ahteixeira em 3/9/2017, 10:32

    Olá José Silva, Bem-Vindo ao fórum.

    Veja no link abaixo um excelente artigo do nosso colega Avelino Sampaio
    usandoaccess.com.br/tutoriais/seguranca-tabelas-vinculadas.asp
    Copiar link e colar no navegador

    Não se esqueça de ver o artigo sobre o OPEN (tem um link no final do artigo), no entanto posto abaixo também:
    usandoaccess.com.br/tutoriais/seguranca-microsoft-access-usando-o-open.asp
    Copiar link e colar no navegador

    Abraço

    RJBeto
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3
    Registrado : 02/09/2017

    Olá ahteixeira

    Mensagem  RJBeto em 3/9/2017, 16:12

    Ontem estive pesquisando vários artigos e já tinha visto alguns do Avelino também.
    Estava retornando para compartilhar minha solução e vi tua mensagem.
    Consegui resolver meu problema e compartilho o que fiz...
    Um abraço

    Fiz desta forma:
    O Banco BackEnd fica em rede protegido por senha.
    O Banco FrontEnd fica instalado em máquinas dos usuários, com tabelas vinculadas ao Back e com senha de acesso que à princípio o usuário deveria conhecer para poder usar.
    Para não fornecer a senha ao usuário criei um terceiro Banco que acessa ao Front, este com senha fornecida ao usuário, o qual chamei de “Abrir sistema”.
    O Banco Abrir Sistema é composto por:
    Uma Macro autoexec que chama a função Libera.
    Uma função Libera que envia comando com senha para abertura do Banco Front.
    Em caso de erro, por qualquer manipulação pelo usuário no endereço do Front, este fecha e envia mensagem para acionamento do administrador.
    Caso não tenha erro, o Front abre com os acessos vinculados ao Back e o “Abrir Sistema” fecha automaticamente.
    Desta forma o Front na máquina do usuário estará protegido porque este não sabe sua senha.
    Sem o acesso ao Front e também como o Back é protegido por senha, toda a estruturação do sistema e dados, estará protegida contra manipulações indesejadas.
    O banco “Abrir Sistema”, não permite o uso da tecla “Shift+Enter” e mesmo sabendo a senha de entrada, o usuário não poderá copiar o código por meio de outro banco paralelo porque os códigos VBA estão protegidos também por senha inserida em “Ferramentas; Propriedades database; Proteção com bloqueio do projeto para exibição”. Este mesmo tipo de bloqueio foi feito no Front e no Back.
    Seguem os códigos do banco Abrir Sistema
    Módulo AbrirMenu - Função Libera
    Function Libera()

    Const DB_Boolean As Long = 1 'DESABALITA SHIFT+ENTER
    ChangeProperty "AllowBypassKey", DB_Boolean, False 'DESABALITA SHIFT+ENTER

    Dim Pass As Variant
    Static objaccess As Access.Application
    Dim db As DAO.Database
    Pass = "SENHA DO MEU FRONT"
    Dim strDbName As String
    strDbName = "C:\ENDEREÇO DO MEU BANCO.accdb"
    Set objaccess = New Access.Application
    'On Error GoTo Sai 'HABILITA A CONDIÇÃO DE ERRO DE ENDEREÇO – SUGIRO FAZER UMA CÓPIA DESTE ANTES DE HABILITAR A SAÍDA EM CASO DE ERRO, POIS A TECLA SHIF+ENTER TAMBÉM ESTARÁ BLOQUEADA
    Set db = objaccess.DBEngine.OpenDatabase(strDbName, False, False, ";PWD=" & Pass)
    objaccess.OpenCurrentDatabase filepath:=strDbName
    objaccess.Visible = True

    'Retornasai: 'HABILITA A CONDIÇÃO DE ERRO DE ENDEREÇO
    DoCmd.Quit 'FECHA O "ABRIR SISTEMA"
    'Exit Sub 'HABILITA A CONDIÇÃO DE ERRO DE ENDEREÇO

    'Sai: 'HABILITA A CONDIÇÃO DE ERRO DE ENDEREÇO
    ' MsgBox "OCORREU ALGUM ERRO. PROCURE O ADMINISTRADOR DO SISTEMA!" 'HABILITA A CONDIÇÃO DE ERRO DE ENDEREÇO
    'Resume Retornasai 'HABILITA A CONDIÇÃO DE ERRO DE ENDEREÇO
    End Function
    '-------------------------------------------------------------------
    Function ChangeProperty(strPropName As String, varPropType As Variant, varPropValue As Variant) As Integer

    Dim dbs As Object, prp As Variant
    Const conPropNotFoundError = 3270

    Set dbs = CurrentDb
    On Error GoTo Change_Err
    dbs.Properties(strPropName) = varPropValue
    ChangeProperty = True

    Change_Bye:
    Exit Function

    Change_Err:
    If Err = conPropNotFoundError Then ' Propriedade não encontrada.
    Set prp = dbs.CreateProperty(strPropName, _
    varPropType, varPropValue)
    dbs.Properties.Append prp
    Resume Next
    Else
    ' Erro desconhecido.
    ChangeProperty = False
    Resume Change_Bye
    End If
    End Function


    RJBeto
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3
    Registrado : 02/09/2017

    Re: [Resolvido]Segurança - Não permitir cópia de tabelas

    Mensagem  RJBeto em 3/9/2017, 16:13

    Resolvido conforme anterior
    avatar
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 5550
    Registrado : 15/03/2013

    Re: [Resolvido]Segurança - Não permitir cópia de tabelas

    Mensagem  ahteixeira em 3/9/2017, 19:18

    Olá José Silva,
    Que bom que conseguiu resolver.

    Obrigado pelo retorno e partilha da solução.
    O fórum agradece.

    Abraço

      Data/hora atual: 22/10/2018, 01:01