LAYERDEV

 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: 3935

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: 3935
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

Linguagem de programação: Nunca faça isso - C#.NET
Mensagem JavaScript com .NET
Garmin Asus com Windows Mobile 6.5.3
Vídeo - Tecla de Atalho
Pedido de desculpas
Dell Streak Demo
Vídeo: Imagem Efeito
Mais um Windows Phone 7
Usando Themes ASP.NET 2.0 (Parte 2)
Visual SourceSafe – Série 6
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 Catalogar Livros
Dica de Segurança no Arquivo de Configuração - Web / App .config
Evento Java versus DotNet
Trabalhando com Session
Mobilidade e Aplicativos Mobile
Atendimento online
HTC Sense vem com Windows 7
CRIANDO MENU DINÂMICO COM C#.NET Passo 1
Exemplos de Queries Linq
Criando Teclas de Atalho no Windows Form
Conecte - novidades tecnológicas revolucionam a medicina
Framework SkyMenu
IsDecimal
Artigo Criando RSS Xml para o Seu Próprio Site
Permitir Teste pelo Browser no WebService
IsWholeNumber
Mais detalhes sobre o HTC Touch HD 2 com o possível Windows Mobile 7
Criando, utilizando e agendando sistema de backup
Copa Microsoft de Talentos em Brasília
Estatísticas de Acesso na Comunidade ASPNETi.COM
Entrevista com um cracker diz que IIS é mais seguro que Apache
Resource e Internacionalização – Parte V Usando Visual Studio.NET 2005
Saiba ganhar dinheiro navegando na internet
Criando arquivo usando Visual Studio.NET 2005
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: 342
Artigos:  750
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