PROGRAMANDO EM ASP.NET

 Busca Online:
 

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

Criptografando URL



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

comente
Diminuir o tamanho das letras Aumentar o tamanho das letras


“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: 3934
voltar   comente  subir


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
Comentado por: Cristiano Maciel - 13/4/2010 0:00:00
Boa noite Maurício,
Estava pesquisando sobre o assunto nos ultimos dias e achei muito interessante seu artigo. Meus Parabéns!!!
Gostaria de saber se poderia enviar a dll utilizada para teste em aplicativo que vou apresentar na faculdade?
Obrigado
Comentado por: Cristiano Maciel - 13/4/2010 0:00:00
Boa noite Maurício,
Estava pesquisando sobre o assunto nos ultimos dias e achei muito interessante seu artigo. Meus Parabéns!!!
Gostaria de saber se poderia enviar a dll utilizada para teste em aplicativo que vou apresentar na faculdade?
Obrigado

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

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

Validator no VS 2005
Criando uma aplicação de uma maneira nova para melhor publicação
DataGrid Mobile
Desenvolvimento de Aplicativos para TV Digital - Parte 4
Torne-se Autor de Artigos
QR Code com ASP.NET
Vídeo: Windows Phone com Windows Mobile 7
Mais um Windows Phone 7
Site fora do ar - Pedido de desculpas
Dicas para programar melhor
SmartNavigation – 1.0 e 1.1 MaintainScroll PositionOn Postback – 2.0
Chart - novo componente integrado Visual Studio .NET 2010
O vírus do curriculum
Vídeo aula explicando o que é o FreeTextBox e como utilizar em seu projetos ASP.NET.
Visual Source Safe ? Série 2
e-Book gratuito Microsoft Office 2010
Moving to Visual Studio 2010 e-Book
GridView Parte I
Vídeos Online Gratuitos
Atendimento online
Microsoft com XBox no Windows Phone 7
Anime-se com o Silverlight
User Control Windows executando no Internet Explorer (parte 1 de 2)
Vírus / Spam Comentários
Novo TechNet Experience Online
Chrome - não reconhecimento...
Concurso Office
Resources e Internacionalização usando Visual Studio.NET 2005 (Parte IV)
Vírus - Full video Pamela Anderson
Insistência com Vírus por E-mail
Certificação com Segunda Chance
Vídeo Aula: Criando e Publicando Site de uma melhor maneira com C#.NET
Criando XML a partir do DataSet Tipado com Visual Studio.NET 2005 – Parte I
Conhecendo o controle Wizard ASP.NET 2.0
Sistema de Login em ASP – Parte VI
Sobre o Autor
  [sumir] [aparecer]
 
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

Informaes Online
Usurios Online: 81
Artigos:  749
Vdeos:  61
PodCast's:  44
Frum:  3128
Empregos:  1385
Usurios Cadastrados: 6163
Publicidade
LAYERDEV




Vdeos Publicados
 

Duas dicas de internet - Google RealTime e OpenDNS

Desconfie sempre da internet e emails

Microsoft Office online no Safari funcionando

Inovação Visual Studio .NET 2010 - parte 4

Office Live online

TAB TAB na ferramenta Visual Studio .NET

Apresentação do IMC - Sistema de Controle de Peso Mobile

Inovação Visual Studio .NET 2010 - parte 3

Inovação Visual Studio .NET 2010 - parte 1

Download de vídeos com o Safari

Criando Chart - Novo componente integrado com o Visual Studio.NET 2010

Serviços: SAC e SMS integrado

Café com TI - Info sobre o Visual Studio.NET 2010 - WebConfig

Café com TI - Info sobre o Visual Studio.NET 2010

Café com TI - Vírus se passando por Correios

Café com TI - Novo jeito de mandar e-mail com vírus

Café com TI - Formatando todo tipo de String

Resolvido erro do Banco do Brasil no browser

Erro no site do Banco do Brasil com o Safari

Duas dicas do Snow Leopard

Incompatibilidade no Snow Leopard

E-mail com vírus, veja os detalhes

Café com TI - Continuando a configuração de Themes no site

Café com Ti - Banner Rotativo

Café com TI - Evento Eco Brasília

Café com TI - Themes dentro do ASPNETi.COM

Café com TI - Trabalhando com o iCal no Macbook

Café com TI - Deixando o rodapé do seu site fixo

Café com TI - Windows 7 sendo utilizado sem qualquer incompatibilidade

Café com Ti - ASP.NET - Explicando o componente ModalDialogExtender do Ajax Toolkit

Café com TI - Indexação de URL com ASP.NET

Café com TI - Configurando Mail para sua conta no HotMail
Enquete ASPNETi.COM
 Os podcasts tem sido proveitoso pra você?

Favor logar para votar
 
Publicidade Vertical
NETITC