Busca online em todo site:
PROGRAMANDO EM ASP.NET

Seja bem vindo(a) Visitante, voc no est logado deseja logar
na comunidade ASPNETi.COM e participar de servios e promoes ? clique aqui.




Título do Artigo

Criptografando URL


Data Publicação: 2/7/2009 23:41:01
Total de visualizações: 2892

comente
 


“Olá pessoal, antes de tudo gostaria de agradecer o time da Microsoft, nesse dia 01 de julho de 2009 eu virei MVP Microsoft de Brasília. Espero poder ajudar muito esse time com palestras, artigos, vídeos e muito mais.”

Voltando para o nosso artigo, hoje em dia com a facilidade da web 2.0, sistemas web e serviços web; precisamos preocupar com a parte de segurança de software e rede. O que irei falar no decorrer do artigo é; explicar porque criptografar url, como criptografar a url com .NET e o passo a passo com figuras e exemplos.

Referência
Ferramenta: Visual Studio .NET 2008
Componte: DLL CriptQuery
Linguagem: C#.NET
Nível: Avançado

Introdução
Para começar; no meu ponto de vista precisamos muito de ter segurança de dados, software e rede. O foco principal é ter segurança nos softwares que desenvolvo e gerencio. Estava vendo na internet um vídeo onde os Crackers invadiram os dados e deixaram uma cidade toda, isto é, a maior cidade do mundo conectada a internet fora do ar. O título do vídeo é: O maior cyberataque do Planeta.[1] Segue uma parte da notícia:

“Veja como a Estônia, país mais conectado do mundo, ficou offline por dias. Você pode se surpreender mas a Estônia, pequeno país do Leste europeu e ex-membro da antiga União Soviética, é o país mais conectado do mundo. E foi este o cenário que crackers russos escolheram para promover o maior cyberataque do mundo. Em 2007, o país se viu sem possibilidade de conexão a bancos, veículos de comunicação, páginas do Governo. Até o serviço nacional de emergência (o equivalente ao nosso 190) parou de funcionar. Veja exatamente o que aconteceu e como eles deram a volta por cima nessa história.” [2]

Para quem vê a notícia pelo vídeo, nota que uns Crackers assumiram o ataque e nem o Governo Americano conseguiu fazer nada sobre essa invasão.
Toda essa notícia surgiu devido a falta de segurança, pode ser no software, rede ou dados. Como desenvolvedor de software, preciso garantir que o meu sistema pode ser organizado e seguro mesmo que um Hacker consiga invadir o servidor onde está hospedado o software web / site. Mesmo que consiga abrir o banco de dados, o invasor terá mais um impedimento, você pergunta, - qual impedimento?, - o impedimento de criptografia de dados dentro do banco de dados.

O mínimo possível de segurança deve ser feito quando desenvolvo algum aplicativo web. E o que vou mostrar é uma criptografia de url para ativação de usuário, por exemplo: Imagine que você tem um site na internet com cadastro completo. O melhor coisa depois do usuário cadastrar o seu e-mail com seus dados, é pedir a ativação do mesmo mandando um e-mail para a sua caixa postal automaticamente.

Explicação do Problema
Até agora, não tem nada de novo com isso, só que dependendo do link que enviar; caso o usuário saiba mais um pouco de computador, tecnologia da informação, ele pode ativar outros usuários inválidos.

Isso porque o link pode ser alterado simplesmente trocando as letras ou números, por exemplo: um link www.SITE.com.br/cadastro/ativar.aspx?usu=email@email.com. Este link é uma idéia de que geralmente recebemos quando preencho um cadastro não seguro. Eu nem mesmo estou contando com https, ssl e outros parâmetros de rede. Você concorda comigo que eu posso colocar outro e-mail no local de email@email.com e ativar outro e-mail que não seja o meu? Se o link for www.SITE.com.br/cadastro/ativar.aspx?chave=12 eu posso trocar o número sem problema e ativar outro cadastro que não seja o meu. Tudo isso pode ser evitado se utilizar criptografia na url e a mesma verificada. O próximo passo será mostrar o exemplo passo a passo.

Exemplo de Código
O link gerado para ativar o usuário foi esse:
http://localhost:2772/criptografiaUrl.aspx?chave=s6GjQ2BpS3RjCN33Uy36XGOTzXjbYFmVeglJflWbakkXRjOOHjxZSCvTHxZJ32FQ%2bJn5Eehlb8LRra1qQS2k%2fg%3d%3d

Ao tentar acessar esse link para ativar o cadastro, a criptografia é verificada e no caso de ser inválida uma mensagem é mostrada.

Abri o Visual Studio .NET 2008 e adicionei como references a dll utilizada, chamada CriptQuery. (imagem 1.1)


Imagem 1.1

Note que a figura 1.1 mostra selecionado a dll referenciada, além de outras também mas, o que foi usado foi apenas a selecionada.
A única que fiz foi: gerar um e-mail e gerar uma url (Code 1.1).

protected void Page_Load(object sender, EventArgs e)
{
if (Request["chave"] == null)
{
CriptQuery.SecureQueryString sec = new SecureQueryString();
sec["email"] = "mauricio@abc.com.br";
Response.Redirect("http://localhost:2772/criptografiaUrl.aspx?chave=" + sec.ToString());
}
}

Code 1.1
Explicação:
No Page_Load da página verifiquei se o parâmetro chavei estava sendo passada, se for igual a null, criei uma instância chamada sec. CriptQuery.SecureQueryString sec = new SecureQueryString();
Após a instância criada, gerei um array com o nome de email dentro de sec instanciado. Igualei o mesmo ao e-mail que gostaria de criptografar, ou seja, o e-mail que preciso ativar junto ao sistema. Esse link no final seria enviado via e-mail ao usuário. sec["email"] = "mauricio@abc.com.br";
A próxima linha foi gerar uma url passando como parâmetro a chave e a variável sec.ToString(). Response.Redirect("http://localhost:2772/criptografiaUrl.aspx?chave=" + sec.ToString());


Imagem 1.2

A imagem 1.2 mostra apenas como ficou o código.
Depois de criar código (code 1.1) executei o código e me mostrou um resultado. (Imagem 1.3)


Imagem 1.3
Note a criptografia feita no topo da página.
O próximo passo é clicar no botão enviar e descriptografar o dado mostrando na página.

Descriptogrando URL
Para descriptografar, preciso pegar o dado e enviar como parâmetro de entrada na instância. (Code 1.2)

private void descriptografar(string p)
{
try
{
CriptQuery.SecureQueryString sec = new SecureQueryString(p);
Response.Write(sec["email"].ToString());
}
catch (Exception ex)
{
Response.Write("URL Inválida " + ex.Message);
}
}

Code 1.2
Explicação:
Note que gerei um novo método privado que não retorna valor e recebe uma string na entrada do método. O passo seguinte foi colocar dentro do try uma nova instância e com uma diferença, isto é, enviando no final da instância o parâmetro de entrada. CriptQuery.SecureQueryString sec = new SecureQueryString(p);

Depois, escrevi na tela o resultado do array criado anteriormente, ou seja, com o mesmo nome Response.Write(sec["email"].ToString());
Na página principal, gerei um botão que acessa esse método descriptografar e veja o que apareceu na tela. (Imagem 1.4)


Imagem 1.4

Se alterar alguma informação da url criptografada, ou seja, do parâmetro criptografado e clicar no botão Enviar, aparece automaticamente uma mensagem falando da invalidade da url. (Imagem 1.5)


Imagem 1.5

Todo o controle está junto da dll adicionada dentro do projeto.
Eu fico por aqui e qualquer dúvida pode entrar em contato.

Referência:
[1] Olhar Digital - www.olhardigital.com.br
[2] Vídeo Olhar Digital - [http://olhardigital.uol.com.br/central_de_videos/video_wide.php?id_conteudo=8514]


Total de visualizações: 2892
voltar   comente  subir

Autor:


Por:Mauricio Junior
Maurício Júnior
Formado pela Faculdade Anhanguera, Especialista pela FGV (Fundação Getúlio Vargas), Pós-Graduação em Docência Superior e cursando Mestrado na UNB Engenharia Elétrica; .
Tenho 27 anos e possuo sete livros publicados pela editora Ciência Moderna no ano de 2009. Sou Certificado Microsoft MCP, MCAD e MVP, faço parte da comunidade ASPNETI.COM, onde publico artigos, vídeos, ebooks e livros Publico artigos, vídeos e podcast em outras comunidades. Trabalho como Analista de Sistemas / Desenvolvedor na empresa ATP S/A. Blog:  blog.mauriciojunior.orgSite pessoal  www.mauriciojunior.org


Comentários:

Comentado por: Bruno Lemos - 8/7/2009 0:00:00
Maurício,

Achei muito bom esse artigo, simples e eficiente, mas gostaria de saber a respeito da DLL, onde podemos encontrar ?

Abs!
Comentado por: Marco - 10/7/2009 0:00:00
Pode me passar esta dll?
Comentado por: Mauricio Junior - 10/7/2009 0:00:00
Olá Lemos, te mandei por e-mail.
Comentado por: Mauricio Junior - 10/7/2009 0:00:00
Olá Marco, te mandei por e-mail a dll. Espero ter ajudado.
Comentado por: Wagner Barros - 15/7/2009 0:00:00
Maurício,

Essa criptografia gerada possui qual tipo de chave?

Eu já li que SHA-1 é hash e existe outros tipos com chaves simétricas, mas não são públicas.

E se for possível vc me enviar essa dll, fico agradecido.

Obrigado,

Comentado por: Ton Borges - 15/7/2009 0:00:00
Bom dia, maurício!
excelente artigo, gostaria de saber se pode me enviar essa dll

Obrigado

Ton
Comentado por: Mauricio Junior - MVP, MCAD, MCP Microsoft - 15/7/2009 0:00:00
Olá Wagner / Ton Borges, mandei por e-mail a dll de criptografia. Espero ter ajudado. Qualquer dúvida, só entrar em contato.
Comentado por: Valmir - 16/7/2009 0:00:00
Olá Mauricio. Supondo que vc já tivesse um projeto relativamente grande. Onde poderíamos colocar a opção de encriptar e desencriptar apenas 1 vez para que não tivessemos que varrer vários e vários forms ???
Comentado por: Mauricio Junior - MVP, MCAD, MCP Microsoft - 17/7/2009 0:00:00
Olá Valmir, a primeira é: tem que ver o que você quer, criptografar url mesmo? Se sim, geralmente usaria um webservice genérico para tal funcionalidade. Pode colocar um método público para isso também, mas, é para criptografar URL e tal. Pois sem que puder usar criptografia de dados, no banco, url, página e tudo mais, melhor é. Segurança no desenvolvimento de software sempre é bom utilizar. Acessa depois os meus vídeos www.devmedia.com.br/mauriciojunior. Espero ter ajudado.
Comentado por: Wesley - 23/7/2009 0:00:00
Poderia enviar a DLL para meu e-mail?

Muito bom o artigo!
Comentado por: Mauricio Junior - MCP, MCAD, MVP Microsoft - 23/7/2009 0:00:00
Enviado Wesley ao seu e-mail.
Comentado por: Auguimar Jr. - 27/7/2009 0:00:00
Fala aí Sr. Maurício, faz um upload dessa DLL aí pra algum lugar e disponibiliza pra gente. Ou então copia ai pra mim \\auguimar\pub.. ehehehe
Comentado por: Mauricio Junior - MCP, MCAD, MVP Microsoft - 27/7/2009 0:00:00
Enviado Auguimar.
Comentado por: Gustavo - 30/7/2009 0:00:00
Maurício, gostei muito do artigo. Você pode me passar esta DLL por favor?
Comentado por: Gustavo - 30/7/2009 0:00:00
Pode me enviar a DLL por favor?
Comentado por: Mauricio Junior - MCP, MCAD, MVP Microsoft - 30/7/2009 0:00:00
Gustavo, mandei por e-mail
Comentado por: Bruno de Oliveira - 5/8/2009 0:00:00
Gostei muito do artigo, estava pensando em situações como essas. Um jeito muito simples e prático. Você poderia me enviar a DLL por favor ? Obrigado.
Comentado por: Bruno - 5/8/2009 0:00:00
Artigo muito bom, você pode me passar a DLL ?
Comentado por: Bruno - 16/8/2009 0:00:00
Gostei muito do artigo, você poderia passar a DLL para mim ?
Obrigado
Comentado por: Paulo Maurício - 31/8/2009 0:00:00
Blz Maurício!!!

Muito bom o artigo. Poderia me enviar a dll?
Obrigado.
Comentado por: Marcio Daniel Puntel - 15/9/2009 0:00:00
Primeiramente parabenizar pelo artigo.

Aproveitar, também, para pedir o favor de enviar a DLL para realizar uns testes aqui.

Obrigado e abç.
Comentado por: Alexandre - 21/9/2009 0:00:00
Bom tarte, primeiramente parabens pelo artigo, aproveitando para pedir a DLL, por favor, ale.martins@enerconsult.com.br
Comentado por: Janderson Silva - 6/11/2009 0:00:00
Parabens pelo artigo, muito fácil de enteder e ao mesmo tempo bastante útil para implementar segurança nas páginas, porém gostaria de saber como faço pra conseguir a DLL do exemplo, se você tiver você pode me enviar: jscarmo2003@yahoo.com.br, desde já te agradeço.
Comentado por: Diego - 9/11/2009 0:00:00
me envia a dll no email diegocleir@gmail.com
Comentado por: Mauricio Junior - 9/11/2009 0:00:00
Janderson e Diego, enviei por e-mail. Abraços.
Comentado por: Diego P Oliveira - 6/3/2010 0:00:00
Mauricio, bom dia!

Primeiramente bom artigo e o assunto abordado é muito bom e ajudará muitas pessoas.

Gostaria de pedir, por gentileza, se seria possível enviar a DLL para que possa realizar testes.

Desde já agradeço.

Diego Oliveira
diego.oliveira@gmail.com

Comente (dê sua opinião): VOCÊ PRECISA ESTAR LOGADO

Comentário:
Código Imagem:  (digite o código da imagem respeitando maiúsculo e minúsculo)

Favor digitar o código da imagem para cadastramento.

 

Outros Artigos do Autor

Criando e Lendo Cookie
As várias mensagens do Sistema Operacional
Exemplo do livro Programando em C# para Web
Resource e Internacionalização – Parte V Usando Visual Studio.NET 2005
Desenvolvimento de Aplicativos para TV Digital - Parte 4
Lendo Arquivo txt usando Visual Studio.NET 2005
Descobrindo e criando tecla de atalho com Windows Forms
Comunicação .NET e VB 6.0 – Parte II - usando Visual Studio.NET 2005
ASP.NET MVC
Trabalhando com LinkButton dentro do Gridview
II Encontro - Um Sucesso!!! (em Brasília)
Aplicativos para Dispositivos Móveis, Usando C#.NET com a ferramenta Visual Studio.NET e com Banco de Dados MySQL e SQL Server
Sistema de Login em ASP – Parte IX (Utilizando três camadas)
Vídeo: Windows Phone com Windows Mobile 7
Criando a Tag Cloud em C#
IsDecimal
Novo Firefox 3.0 - o chamado Minefield
Calcular Média de Combustível
e-Book gratuito Microsoft Office 2010
Visual Studio 2010 Beta 2
Usando public interface
Registro .COM.BR com CPF
Detectando ENTER
Media Center Microsoft bombando
Mais detalhes sobre o HTC Touch HD 2 com o possível Windows Mobile 7
Internet começa a ter ultra velocidade no Brasil
Como fazer uma enquete - parte 2
Não publicação
Usando Split no C#
Usando ProgressBar com Visual Studio.NET 2005
Table ExoPC Slate
Sistema Calcula IMC e IGC no Celular
Virtual Earth – Primeiro Passo
XAML Power Toys
Visual Source Safe ? Série 2

Publicidade:

[sumir] [aparecer]
NETITC




Informaes Online:

Usurios Online: 12
Artigos:  651
Vdeos:  47
PodCast's:  31
Frum:  3098
Empregos:  1223
Usurios Cadastrados: 5784

Categoria de Artigos

Vdeos

Enquete - D sua opinio

 Os podcasts tem sido proveitoso pra você?

 

Colaboradores

Foto Autor autor: Mauricio Junior   
publicou 379 artigo(s).
Foto Autor autor: Júlio Battisti   
publicou 51 artigo(s).
Foto Autor autor: Fabio Galante Mans   
publicou 28 artigo(s).
Foto Autor autor: Kleber Becerra   
publicou 10 artigo(s).
Foto Autor autor: Ramon Durães   
publicou 6 artigo(s).
Foto Autor autor: Ebenézer de Souza   
publicou 5 artigo(s).
Foto Autor autor: Fabio Aguiar   
publicou 4 artigo(s).
NETITC