Ocultar password em asp.net

Uma das coisas que me faz muita confusão é ter a password e o username em texto simples nos ficheiros de web.config.

Isto faz-me confusão porque na realidade em caso de falha de segurança damos muito pouco trabalho aos hackers… 🙂

Uma das formas de ocultar a informação relativa ao utilizador e à sua password é ocultando a no registo da máquina.

A ferramenta a usar é o aspnet_setreg.exe, uma ferramenta que vem com a Framework da Microsoft. (Microsoft .Net Framework).

Esta ferramenta permite-nos guardar no registo informações como o utilizador e a password de uma ligação como por exemplo ao SQL. Assim escusamos de ter a connection string com user e password no ficheiro web.config.

A ferramenta utiliza internamente 2 funções ou métodos que são locais na máquina, a CryptProtectData e a CryptUnprotectData, uma é o método que usamos para cifrar a nossa ligação a outra é o que usamos para decifrar a nossa ligação.
Atenção que quem tiver acesso à máquina tem acesso a estes métodos e por isso pode ver a informação cifrada.

Ao utilizarmos o aspnet_setreg.exe usamos uma sintaxe do género

aspnet_setreg.exe -k:SOFTWAREMINHA_APLICACAO_SEGURAidentity -u:”dominiopassword” -p:”password”

Este comando cifra o utilizador e a sua password na chave de registo indicada com a flag -k: também gera o output que devemos colocar no nosso web.config ou na nossa machine.config para que o user asp.net possa saber como localizar as chaves no registo e usa-las.

O output que recebemos é semelhante a este:

username=”registry:HKLMSOFTWAREMINHA_APLICACAO_SEGURAidentityASPNET_SETREG,username”
password=”registry:HKLMSOFTWAREMINHA_APLICACAO_SEGURAidentityASPNET_SETREG,password”

O Windows atribui à chave de registry FULL control ao utilizador de system, aos administradores e ao utilizador que a criou.

Se os administradores não tiverem nada a ver com isto podem ser removidos que não fazem falta… Atenção que ao removerem as permissões dos administradores ficam com menos apoio na tentativa de resolução de erros. Deixem sempre o user system e o que criou a chave se esta tiver sido criada com o user que corre o site. Para estas alterações ou adicionar outro utilizador podem usar o regedt32.exe para dar permissões às pastas.

Agora é só alterar a aplicação correspondente no seu web.config ou na suma machinec.config com o retorno do aspnet_setreg para começar a funcionar com as password e users menos visíveis

username=”registry:HKLMSOFTWAREMINHA_APLICACAO_SEGURAidentityASPNET_SETREG,username”
password=”registry:HKLMSOFTWAREMINHA_APLICACAO_SEGURAidentityASPNET_SETREG,password” />

Deixei o nome dos métodos usados internamente para mais tarde num outro texto do blog falar deles.

 

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.