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.

 

preparar um reset de password

Criar um disco de reposição de password

Se estivermos a correr o Microsoft Windows XP Professional, podemos criar um disco de reposição de password este disco vai ser util se algum dia nos esquecermos da nossa password, podemos usa-lo para aceder ao nosso computador. Se nos esquecemos da password e não tivermos este disco temos a vida muito dificultada.

Para criar um disco de reposição de password.

1. Entrar no computador como administrador.
2. Carregar em Start, e depois carregar no Control Panel.

Start menu with Control Panel selected

3. Debaixo de Pick a category, carregar User Accounts.

Control Panel window with User Accounts selected

4. No menu User Accounts, carregar no nome da conta que se pretende criar o disco de recuperação de password.

User Accounts window with account name selected

5. Debaixo da secção Related Tasks, carregue Prevent a forgotten password.

User Accounts window with Prevent a forgotten password selected in Related Tasks area

6. No ecrã Welcome to the Forgotten Password Wizard, carregar em Next.

Welcome to the Forgotten Password Wizard page with Next selected

7. Insira uma disquete no seu leitor, depois carregar em Next.

 

Create a Password Reset Disk page with Next selected

8. Escreva a sua password e carregue em Next.

Current User Account Password page with password entered and Next selected

9. Depois do Forgotten Password Wizard criar a disquete de reset carregar em Next.

Creating Password Reset Disk page with Next selected

10. Carregar em Finish.

Completing the Forgotten Password Wizard page with Finish selected

 

Remova o “password reset disk” e guarde-o num sitio seguro. Qualquer pessoa que tiver acesso a este disco consegue ter acesso á informação protegida pela conta que o disco representa sem ter necessidade de saber a password.

Se algum dia não nos lembrarmos da password sempre podemos usar este disco para fazer um reset.