... Assinatura do site por 3 anos + Kit MontaRibbons + 3 Livros em PDF + Diversas Revistas (pdf) de brinde, por apenas R$145,00
(
podendo parcelar em até 10 vezes no cartão de crédito)...

Clique aqui e obtenha mais detalhes do nosso kit completo e de como comprar.


Chave de segurança em funções públicas

Funções com escopo Public devem receber sua especial atenção, pois podem oferecer uma brecha na segurança, mesmo no caso do aplicativo estar na extensão ACCDE. 

Se o invasor estiver acesso ao Painel de Navegação e chegar até a Janela Imediata do VBA é possível que tente executar tais funções, com a intenção de extrair algo.  

Por exemplo: vamos supor que você tenha a função abaixo no seu aplicativo para descriptografar senha ou outros tipos de informações sigilosas.

Public Function fncDCrip(varChave) As Variant
Dim i%, k%, strBuff$, strpwd$
On Error GoTo trataErro
strpwd = "MNBVCXZLKJ039RTY4U6W"
For i = 1 To Len(varChave)
   k = Asc(Mid$(varChave, i, 1))
   k = k - Asc(Mid$(strpwd, i, 1))
   strBuff = strBuff & Chr$(k)
Next i
fncDCrip = strBuff
sair:
   Exit Function
trataErro:
   fncDCrip = 0: Resume sair
End Function

Da forma como se encontra a função acima, qualquer programador com um pouco de experiência poderá utilizar a função, que você deixou com livre acesso, para decifrar os dados criptografados que você tenha armazenado em uma tabela. 

fncDcrip("®Ä§Â¬ÆÉ") :::::> avelino

Solução:  Crie uma chave numérica que impeça o funcionamento da função, caso esta não seja informada corretamente.   Veja a alteração da função:

Public Function fncDCrip(varChave, Optional lngChave as long =0) As Variant
Dim i%, k%, strBuff$, strpwd$
On Error GoTo trataErro
'------------------------------------------------------
'Se não informar a correta chave de segurança, a função 
'passará ao valor 0(zero)
'------------------------------------------------------
if lngChave <> 131520 then
   fncDCrip = 0
   Exit Function
end if
strpwd = "MNBVCXZLKJ039RTY4U6W"
For i = 1 To Len(varChave)
   k = Asc(Mid$(varChave, i, 1))
   k = k - Asc(Mid$(strpwd, i, 1))
   strBuff = strBuff & Chr$(k)
Next i
fncDCrip = strBuff
sair:
   Exit Function
trataErro:
   fncDCrip = 0: Resume sair
End Function

O programador ao executar a função sem a chave ou com a chave incorreta receberá como resultado o valor 0.

fncDcrip("®Ä§Â¬ÆÉ") :::::> 0

fncDcrip("®Ä§Â¬ÆÉ",131520) :::::> avelino

Bom estudo!


 

 


Não há comentário

Envie seu comentário: