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]Proteçao a acesso à tabela MsysObjetcs

    Mylton
    Mylton
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 681
    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 8 vez(es)
    IvanJr.
    IvanJr.
    Developer
    Developer

    Respeito às Regras 100%

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

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

    Mensagem  IvanJr. 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


    .................................................................................
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.
    Sempre tente entender o código, não somente copie e cole.
    marcelo3092
    marcelo3092
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 151
    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 : 681
    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.
    IvanJr.
    IvanJr.
    Developer
    Developer

    Respeito às Regras 100%

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

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

    Mensagem  IvanJr. 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.


    .................................................................................
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.
    Sempre tente entender o código, não somente copie e cole.
    Mylton
    Mylton
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 681
    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 7 vez(es)
    IvanJr.
    IvanJr.
    Developer
    Developer

    Respeito às Regras 100%

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

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

    Mensagem  IvanJr. 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?



    .................................................................................
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.
    Sempre tente entender o código, não somente copie e cole.
    Mylton
    Mylton
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 681
    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
    IvanJr.
    IvanJr.
    Developer
    Developer

    Respeito às Regras 100%

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

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

    Mensagem  IvanJr. 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
    http://www.maximoaccess.com/t9821-resolvidolistando-todos-os-formularios-em-uma-combobox#78978
    http://www.maximoaccess.com/t16282-resolvidolistar-objetos-do-access#122493 (por defeito = por padrão / português de portugal)
    http://www.maximoaccess.com/t34950-resolvido-ligar-campo-name-da-tabela-msysobjects-a-outra-tabela#239386
    http://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.


    .................................................................................
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.
    Sempre tente entender o código, não somente copie e cole.
    Mylton
    Mylton
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 681
    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
    IvanJr.
    IvanJr.
    Developer
    Developer

    Respeito às Regras 100%

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

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

    Mensagem  IvanJr. 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.


    .................................................................................
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.
    Sempre tente entender o código, não somente copie e cole.
    Mylton
    Mylton
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 681
    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
    IvanJr.
    IvanJr.
    Developer
    Developer

    Respeito às Regras 100%

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

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

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

    O fórum agradece o retorno. Sucesso.


    .................................................................................
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.
    Sempre tente entender o código, não somente copie e cole.
    Avelino Sampaio
    Avelino Sampaio
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3504
    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

    Conteúdo patrocinado

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

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 18/7/2019, 00:00