Amiguinhos,
cjp
Desde os tempos do SIX Library temos boas opções para segurança de tabelas desde suas funções, incluindo escrita baixo nivel do header das tabelas, mas funcionava muito bem quando o trabalho acontecia centralizado em pc unico.
Quando imaginávamos estas proteções para uso em rede acabamos por encontrar problemas de travamentos em maquinas enquanto outras ainda estavam com tabelas abertas.
Depois passamos a usar semáforos e creio que muitos ainda tem estas características em funcionamento.
A encriptação por campos é a melhor saída, já que somente o conteúdo será manipulado e não os registros ou tabelas inteiras.
Voce criptografa o conteúdo do campo, salva e pronto e quando for visualizar os dados desfaz a criptografia.
Exemplo:
Você tem um tabela com o campo NOME e não quer que alguém abra e veja o nome salvo quando aberto pelo DBU por exemplo.
No momento de salvar, ou seja, durante uma inclusão de registro ou alteração, ao fazer o salvamento do dado bastará criptografar o mesmo, repassar para o campo e dar o commit.
Parapegar o conteúdo do campo para apresentar em uma lista, imprimir em um relatório ou visualizar num browser, deverá descriptografar o conteúdo do campo para uma variável e apresentá-la onde quiser.
Ao capturar o conteúdo do campo e descriptografá-lo para uma variável o dado estará legível enquanto que o conteúdo no campo ainda estará criptografado para que outra aplicação possa fazer o mesmo processo sem sofrer interferência por travamentos.
Se o dado da variável for alterado emtão basta criptografá-lo antes de repassar para o campo.
Código: Selecionar todos
M->NOME := "ROCHINHA"
...
dbSeek( M->NOME )
if .not. found()
dbAppend()
...
CLIENTES->FANTASIA := M->NOME
CLIENTES->NOME := Encripta( M->NOME, "M1NH@S3NH@ )
...
dbCommit()
dbRUnlock()
else
dbRlock()
...
CLIENTES->FANTASIA := M->NOME
CLIENTES->NOME := Encripta( M->NOME, "M1NH@S3NH@ )
...
dbCommit()
dbRUnlock()
endif
Ao recuperar
Código: Selecionar todos
...
M->NOME := DesEncripta( CLIENTES->NOME, "M1NH@S3NH@ )
...
Não é necessário travar o registro para descriptografar um conteúdo.