MaximoAccess

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

Obrigado

Administração do MaximoAccess

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

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

    [Resolvido]Proteçao a acesso à tabela MsysObjetcs

    Mylton
    Mylton
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 728
    Registrado : 23/08/2010

    [Resolvido]Proteçao a acesso à tabela MsysObjetcs Empty [Resolvido]Proteçao a acesso à tabela MsysObjetcs

    Mensagem  Mylton em 23/5/2019, 21:15

    Boa tarde
    Navegando tentando entender e aprender a proteger de forma mais ampla possível um BD me deparei com as dicas do Avelino.
    Proteção 100 % não há.
    E ai descobri a tal tabela MsysObjetcs.
    Leio para cá e pra lá.
    E garimpei esse exemplo anexado.

    E ai ficam mais dúvidas.
    Funciona? Essa é a primeira e fundamental.
    Abro e não acho as tabelas!
    rs.

    O autor no BE utilizou-se de uma técnica e ocultou as tabela de dados.
    Se criarmos uma tabela qualquer essa fica visível.

    O arquivo FE não está criptografado.
    Possui 2 formulários e 1 relatório sem tabelas vinculadas.

    Sendo que a fonte de registro para cada um dos 3 objetos de banco de dados foi definida automaticamente para a tabela BE quando o objeto é aberto.
    Acredito que no evento Form Load.

    Código:
    Private Sub Form_Load()
       Dim rst As DAO.Recordset
       Me.RecordSource = "SELECT * FROM Table1 IN '' [MS Access;PWD=isladogs;DATABASE=" & CurrentProject.Path & "\BE.accdb];"
       Set rst = CurrentDb.OpenRecordset(Me.RecordSource, dbOpenDynaset, dbSeeChanges)
       With rst
           .MoveLast
           .MoveFirst
       End With
       'get record count
       Me.txtTotal = Me.RecordsetClone.RecordCount
       'combo row source
       Me.cboLastName.RowSource = "SELECT DISTINCT Table1.LastName FROM Table1 IN '' [MS Access;PWD=isladogs;DATABASE=" & CurrentProject.Path & "\BE.accdb] ORDER BY Table1.LastName;"
       Me.cmdPrint.SetFocus
    End Sub


    Ele comenta que se comporta exatamente como qualquer banco de dados dividido, sem objetos vinculados e, portanto, nenhuma sequência de conexão visível em MSysObjects.
    E quando o FE for convertido em um arquivo ACCDE, não será possível para os usuários finais deduzirem a senha do BE (sem alguma invasão séria!).


    Minhas dúvidas e pedido de SOS aos experts.

    Num form mais alongado a codificação como ficaria?
    Achei muito simples, diria que pobre em termos de quantitativo de codificação.
    Se houvessem consultas?
    E como acho essas tabelas escondidas?
    De modo que se funcionar possa realizar a engenharia reversa e deixar as minhas tabelas escondidas.

    Agora ....
    Funciona?

    Obrigado.
    Anexos
    [Resolvido]Proteçao a acesso à tabela MsysObjetcs AttachmentLinkedNoTablesDEMO.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (464 Kb) Baixado 14 vez(es)
    DamascenoJr.
    DamascenoJr.
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2455
    Registrado : 22/11/2016

    [Resolvido]Proteçao a acesso à tabela MsysObjetcs Empty Re: [Resolvido]Proteçao a acesso à tabela MsysObjetcs

    Mensagem  DamascenoJr. em 23/5/2019, 23:43

    A técnica é boa, mas você teria problemas para abrir formulários e relatórios filtrados já que a propriedade origem do registro é definida em tempo de execução. As consultas teriam que ter atenção especial quanto ao comando SQL que precisariam ser refeitos no objeto em toda a abertura do banco de dados para garantir o caminho do arquivo backend.

    No final a codificação ficaria de difícil manutenção.

    A melhor técnica que vi até agora para proteção do backend é a do PROTEC do mestre Avelino. Você usa como se estivesse vinculado e assim não precisaria de codificação extra para filtros.

    Para achar as tabelas ocultas, crie um módulo no backend com o código abaixo e execute-o.

    Código:
    Sub fncMostraTabela()

        Dim tbl As TableDef
       
        For Each tbl In CurrentDb.TableDefs
            If tbl.Attributes = 1 Then
                tbl.Attributes = 0
            End If
        Next tbl

    End Sub


    .................................................................................
    Ajude-se a ser ajudado, anexe seu projeto.
    Sempre tente entender o código,
    não somente copie e cole.
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.
    marcelo3092
    marcelo3092
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 236
    Registrado : 19/08/2010

    [Resolvido]Proteçao a acesso à tabela MsysObjetcs Empty Re: [Resolvido]Proteçao a acesso à tabela MsysObjetcs

    Mensagem  marcelo3092 em 24/5/2019, 00:33

    Boa noite como o amigo IvanJr. falou o protec é muito bom pois ele cria uma senha falsa do back end e alem do protec eu uso o open tambem o protec protege os vinculos e o open protege o front end.

    a imagens da senha falsa

    [Resolvido]Proteçao a acesso à tabela MsysObjetcs Senha_10
    Mylton
    Mylton
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 728
    Registrado : 23/08/2010

    [Resolvido]Proteçao a acesso à tabela MsysObjetcs Empty Re: [Resolvido]Proteçao a acesso à tabela MsysObjetcs

    Mensagem  Mylton em 24/5/2019, 18:57

    Ivan
    Como esse autor do código escondeu essas tabelas?
    Me expressei errado.
    Existe uma função que esconde.
    Mas ao escondermos essa tabela com essa função, não conseguimos vê-la se tentarmos importá-la por outro banco.
    A dúvida consiste que o access em si, possui muitas tabelas "escondidas" de forma profunda que pertencem ao seu funcionamento, e que não conseguimos enxergar.
    Como conseguiria ver essas tabelas?
    Pois se enxergamos podemos dificultar a sua constatação.
    DamascenoJr.
    DamascenoJr.
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2455
    Registrado : 22/11/2016

    [Resolvido]Proteçao a acesso à tabela MsysObjetcs Empty Re: [Resolvido]Proteçao a acesso à tabela MsysObjetcs

    Mensagem  DamascenoJr. em 25/5/2019, 21:15

    [Resolvido]Proteçao a acesso à tabela MsysObjetcs Dica1110
    [Resolvido]Proteçao a acesso à tabela MsysObjetcs Dica2211

    As tabelas ocultas são para controle interno do MS Access sobre o arquivo onde elas estão. Elas guardam informações sobre relacionamentos de tabelas, data de criação, campos, etc. Eu não aconselho a mexer nessas tabelas pra não causar mal funcionamento e corromper seu arquivo. Deixe-as como estão.


    .................................................................................
    Ajude-se a ser ajudado, anexe seu projeto.
    Sempre tente entender o código,
    não somente copie e cole.
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.
    Mylton
    Mylton
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 728
    Registrado : 23/08/2010

    [Resolvido]Proteçao a acesso à tabela MsysObjetcs Empty Re: [Resolvido]Proteçao a acesso à tabela MsysObjetcs

    Mensagem  Mylton em 25/5/2019, 22:18

    Ivan.
    Talvez tenha me referido de forma inadequada.
    Existem tabelas mais profundas do access e que não conseguimos identificar.
    Estou na rua.
    Nem imagino como ver com codificação e sequer esconder como.
    Seriam essas as quais me refiro.
    Anexo.
    Já traduzi alguma coisa.
    Mas estou na rua sem exemplo de tradução.
    Achei muito interessante.
    Aguardamos vc e demais mestres.
    ABS.
    Anexos
    [Resolvido]Proteçao a acesso à tabela MsysObjetcs AttachmentSYD_v1.3.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (99 Kb) Baixado 13 vez(es)
    DamascenoJr.
    DamascenoJr.
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2455
    Registrado : 22/11/2016

    [Resolvido]Proteçao a acesso à tabela MsysObjetcs Empty Re: [Resolvido]Proteçao a acesso à tabela MsysObjetcs

    Mensagem  DamascenoJr. em 25/5/2019, 23:15

    Como eu disse e como você mesmo já sacou, as tabelas ocultas/escondidas são pra uso do próprio access. Não foi o desenvolvedor que as ocultou e sim o Access que faz o controle delas e das informações nelas contidas. Elas são automaticamente criadas quando o arquivo BD do Access é criado.

    Para realizar uma ocultação profunda (Deep Hidden) basta mudar o atributo da tabela para 1
    Código:
    CurrentDB.TableDefs("tblQueQueroOcultar").Attributes = 1

    Para que a tabela volte a aparecer mude o atributo dela para 0
    Código:
    CurrentDB.TableDefs("tblQueQueroMostrar").Attributes = 0

    Creio que as tabelas já estejam bem escondidas para que o usuário não altere nada e assim não causar corrupção do arquivo.

    Mylton escreveu:Pois se enxergamos podemos dificultar a sua constatação.
    Você quer mostrar as tabelas escondidas para voltar a escondê-las?



    .................................................................................
    Ajude-se a ser ajudado, anexe seu projeto.
    Sempre tente entender o código,
    não somente copie e cole.
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.
    Mylton
    Mylton
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 728
    Registrado : 23/08/2010

    [Resolvido]Proteçao a acesso à tabela MsysObjetcs Empty Re: [Resolvido]Proteçao a acesso à tabela MsysObjetcs

    Mensagem  Mylton em 26/5/2019, 12:19

    Tenho 2 ideias.
    1. Para esconder poderia acrescentar num botão click essa  codificação que fez?
    2. Uma vez escondida de forma profunda a tabela msysobjects não seria vista quando expusessemos as tabelas ocultas do sistema?
    Penso que não. Se estiver correto, não poderia ser vista e em consequência a senha nao seria vista.
    Para ser vista teria q ter acesso ao VBA e codificar. Se bloqueamos a codificação quando transformamos para ACCDE e depois para ACCDR não teriam acesso.

    Estou  correto?
    Caso sim.
    A codificação seria:
    Evento click
    CurrentDB.TableDefs("tblQueQueroOcultar").Attributes = 1
    End  sub

    Ou teria algo diferente?

    Porque as últimas tabelas não podem ser visualizadas?
    O que as impedem de ser vistas?
    Já alguma codificação que faça isso?


    Se estiver errado, poderia explicar o porquê?

    Obrigado
    DamascenoJr.
    DamascenoJr.
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2455
    Registrado : 22/11/2016

    [Resolvido]Proteçao a acesso à tabela MsysObjetcs Empty Re: [Resolvido]Proteçao a acesso à tabela MsysObjetcs

    Mensagem  DamascenoJr. em 26/5/2019, 18:58

    Mylton escreveu:1. Para esconder poderia acrescentar num botão click essa  codificação que fez?
    A codificação seria:
    Evento click
    CurrentDB.TableDefs("tblQueQueroOcultar").Attributes = 1
    End  sub
    Sim.

    Myton escreveu:2. Uma vez escondida de forma profunda a tabela msysobjects não seria vista quando expusessemos as tabelas ocultas do sistema?
    Sim e não.
    Sim. Ocultação profunda não aparece quando pedimos para mostrar as tabelas ocultas do sistema.
    Não. Não mexa nos atributos da tabela MSysObjects. Ela é intocável. Somente o Access pode fazer alterações nessa tabela.

    Mylton escreveu:Penso que não. Se estiver correto, não poderia ser vista e em consequência a senha nao seria vista.
    Para ser vista teria q ter acesso ao VBA e codificar. Se bloqueamos a codificação quando transformamos para ACCDE e depois para ACCDR não teriam acesso.
    Não. A ocultação profunda de uma tabela em ACCDE OU ACCDR não impede um invasor de explorar a tabela por um arquivo externo e assim descobrir a senha dos vínculos. Inclusive já fiz isso com um aplicativo do colega Marcelo e o alertei sobre usar a mesma senha do backend no frontend, o que facilitava e muito o trabalho de um invasor contra a segurança do arquivo.

    Mylton escreveu:Porque as últimas tabelas não podem ser visualizadas?
    Porque são tabelas internas do Access.

    Mylton escreveu:O que as impedem de ser vistas?
    O Access.

    Mylton escreveu:Já alguma codificação que faça isso?
    Desconheço.

    Seguem alguns comentários dos mestres sobre as tabelas internas do Access
    https://www.maximoaccess.com/t9821-resolvidolistando-todos-os-formularios-em-uma-combobox#78978
    https://www.maximoaccess.com/t16282-resolvidolistar-objetos-do-access#122493 (por defeito = por padrão / português de portugal)
    https://www.maximoaccess.com/t34950-resolvido-ligar-campo-name-da-tabela-msysobjects-a-outra-tabela#239386
    https://www.maximoaccess.com/t30116-resolvidocomo-mudar-permissao-do-msysobjects-para-poder-altera-lo-via-codigo#209049

    Avelino em Segurança e produtividade com o código PROTEC
    Ao gerarmos os vínculos, o sistema interno do Access nos faz a gentileza de armazenar a senha da Base de Dados em uma tabela do sistema, chamada de MsysObjects, permitindo o fácil acesso pelo Painel de Navegação e até por aplicativos externos.

    Usando tabelas não vinculadas
    A senha precisa ser informada no código e muitos programadores não fazem idéia de que é muito fácil capturar esta senha, quando o relatório está sendo exibido, ainda que o código esteja protegido pela extensão ACCDE.


    .................................................................................
    Ajude-se a ser ajudado, anexe seu projeto.
    Sempre tente entender o código,
    não somente copie e cole.
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.
    Mylton
    Mylton
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 728
    Registrado : 23/08/2010

    [Resolvido]Proteçao a acesso à tabela MsysObjetcs Empty Re: [Resolvido]Proteçao a acesso à tabela MsysObjetcs

    Mensagem  Mylton em 26/5/2019, 22:34

    Obrigado Ivan pelas respostas.
    Para finalizar...
    1) Ocultação profunda não aparece quando pedimos para mostrar as tabelas ocultas do sistema.
    Não. Não mexa nos atributos da tabela MSysObjects. Ela é intocável. Somente o Access pode fazer alterações nessa tabela.

    Não pretendo interagir. Apenas esconder.

    2) Não. A ocultação profunda de uma tabela em ACCDE OU ACCDR não impede um invasor de explorar a tabela por um arquivo externo e assim descobrir a senha dos vínculos. Inclusive já fiz isso com um aplicativo do colega Marcelo e o alertei sobre usar a mesma senha do backend no frontend, o que facilitava e muito o trabalho de um invasor contra a segurança do arquivo.


    Utilizou se do access ou de outros programa?
    Pois um hexadecimal ou outro pra aqueles que mexem conseguem ver.
    Se for pelo access somente a linha proposta pelo Avelino resolve?


    Obrigado
    DamascenoJr.
    DamascenoJr.
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2455
    Registrado : 22/11/2016

    [Resolvido]Proteçao a acesso à tabela MsysObjetcs Empty Re: [Resolvido]Proteçao a acesso à tabela MsysObjetcs

    Mensagem  DamascenoJr. em 27/5/2019, 00:40

    Mylton escreveu:Utilizou se do access ou de outros programa?
    apenas o Access.

    Mylton escreveu:Se for pelo access somente a linha proposta pelo Avelino resolve?
    sim. Use a técnica do PROTEC e fique despreocupado com a tabela MSysObjects.


    .................................................................................
    Ajude-se a ser ajudado, anexe seu projeto.
    Sempre tente entender o código,
    não somente copie e cole.
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.
    Mylton
    Mylton
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 728
    Registrado : 23/08/2010

    [Resolvido]Proteçao a acesso à tabela MsysObjetcs Empty Re: [Resolvido]Proteçao a acesso à tabela MsysObjetcs

    Mensagem  Mylton em 27/5/2019, 01:24

    Ok.
    Obrigado.
    Gde abs
    DamascenoJr.
    DamascenoJr.
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2455
    Registrado : 22/11/2016

    [Resolvido]Proteçao a acesso à tabela MsysObjetcs Empty Re: [Resolvido]Proteçao a acesso à tabela MsysObjetcs

    Mensagem  DamascenoJr. em 27/5/2019, 01:25

    O fórum agradece o retorno. Sucesso.


    .................................................................................
    Ajude-se a ser ajudado, anexe seu projeto.
    Sempre tente entender o código,
    não somente copie e cole.
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.
    Avelino Sampaio
    Avelino Sampaio
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3686
    Registrado : 04/04/2010

    [Resolvido]Proteçao a acesso à tabela MsysObjetcs Empty Re: [Resolvido]Proteçao a acesso à tabela MsysObjetcs

    Mensagem  Avelino Sampaio em 27/5/2019, 09:06

    Olá, amigos!

    nesta semana pretendo montar um vídeo explicativo de como configurar o PROTEC, de forma bem simplificada.

    Retornarei aqui avisando
    Mylton
    Mylton
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 728
    Registrado : 23/08/2010

    [Resolvido]Proteçao a acesso à tabela MsysObjetcs Empty Re: [Resolvido]Proteçao a acesso à tabela MsysObjetcs

    Mensagem  Mylton em 13/9/2019, 23:05

    Aguardando....
    O vídeo.

      Data/hora atual: 4/12/2020, 10:32