Atenção: esse artigo tem um vídeo complementar. Clique e assista!

De que se trata o artigo

A finalidade deste artigo é discutir aspectos relativos à segurança de aplicações Web, como o uso de Captcha, onde você tem a possibilidade de verificar se o usuário é realmente uma pessoa. Além disso, também será mostrado como se defender de ataques via SQL Injection.

Em que situação o tema é útil

O tema é útil para que você possa criar aplicações WEB mais seguras, implementando recursos que venham garantir a segurança das informações ali contidas. Desta forma, técnicas como SQL Injection, podem ser prevenidas de maneira simples e com recursos do próprio .NET.

Captcha e SQL Injection - Construa aplicações mais seguras

A invasão de uma aplicação Web pode acontecer de diversas formas, não necessariamente a um servidor, mas principalmente por brechas deixadas pelos desenvolvedores da mesma. Desta forma, é preciso conhecer as principais técnicas de invasão utilizadas atualmente, para prevenir suas aplicações de possíveis ataques. Um exemplo muito comum é o SQL Injection, que talvez seja a invasão mais recorrente em web sites, visto que nenhuma plataforma possui por default este tipo de checagem.

Em inúmeras ocasiões a utilização de um site envolverá a manipulação de dados de caráter privativo, sendo essencial manter a integridade e a confidencialidade dos mesmos. A ideia de integridade deve ser encarada como uma garantia de que os dados empregados não sofrerão modificações, por acidente ou de forma deliberada, durante a transferência de informações entre o browser e o site considerado. Já a noção de confidencialidade diz respeito a um pré-requisito de que somente pessoas autorizadas terão acesso a determinados dados.

A finalidade deste artigo é fornecer uma visão geral de alguns tipos de ataques (que podem ocorrer em uma aplicação Web) e como os mesmos podem estar sendo evitados. Assim, iremos desenvolver alguns exemplos tanto no ASP.NET MVC como em Web Forms.

Evitando spam com o uso de CAPTCHAs

Nem sempre temos a garantia de que o visitante de um Web Site é realmente um ser humano, assim, é preciso criar formas de garantir esta informação.

Atualmente, existe um recurso denominado CAPTCHA (“Completely Automated Public Turing test to tell Computers and Humans Apart”), uma técnica utilizada em aplicações Web que garante (na maioria das vezes) que o usuário é um visitante real. Este mecanismo, geralmente, consiste na geração automática de uma imagem levemente distorcida e contendo uma pequena sequência de caracteres. A distorção é proposital, já que embora não comprometa a leitura por uma pessoa, dificultará a ação de possíveis boots.

Embora a implementação própria de um CAPTCHA não represente uma tarefa de grande complexidade, o comum é que se escolha componentes disponibilizados por terceiros, existindo inclusive soluções sofisticadas e sem nenhum custo. Um exemplo disto é o serviço reCAPTCHA, uma opção gratuita e disponibilizada pela Google a fim de permitir o uso deste tipo de recurso em aplicações Web.

A integração de aplicações Web com o serviço reCAPTCHA é feita por meio de plug-ins. Além de ser possível você utilizar o mesmo no próprio ASP.NET, também tem a possibilidade de utilizá-lo em outras linguagens, como Ruby e PHP.

Entendendo a Segurança do reCAPTCHA

O reCAPTCHA possui os mais altos padrões de segurança. Outras implementações de CAPTCHAs utilizam textos sem distorções ou texto com poucas. Essas implementações são vulneráveis a simples ataques automatizados. Existem alguns que apenas realizam perguntas baseadas em texto aritméticas como "o que é 1 + 1". Estes podem ser quebrados facilmente por qualquer invasor, visto pela simplicidade que é o mesmo.

Para proteger seu site, o reCAPTCHA utiliza duas camadas de segurança ao gerar imagens. Ela começa com imagens que não podem ser lidos por computadores e depois distorce ainda mais. Veja um exemplo na Figura 1.

Figura 1. Exemplo distorções de imagens reCAPTCHA

O reCAPTCHA é um serviço Web, assim, todas as imagens são geradas pelos servidores da Google. Além da simplicidade que este oferece (visto que você não precisa executar scripts de geração de imagens em seus próprios servidores), este também oferece um nível extra de proteção: os CAPTCHAs do mesmo são atualizados automaticamente sempre que uma vulnerabilidade de segurança é encontrada. Um exemplo comum é quando algum desenvolvedor escreve um programa que pode ler as imagens distorcidas do reCAPTCHA, assim, quando isso acontece, ele adiciona ainda mais distorções em pouco tempo (sem que a página necessite ser acessada novamente). Isso é muito importante, visto que não há necessidade de reinstalar um CAPTCHA (com uma versão atualizada) cada vez que uma vulnerabilidade é encontrada.

Além disso, o reCAPTCHA possui uma camada que trabalha diretamente com o IP do visitante do site, garantido que, se um determinado IP acessar “N” vezes o serviço em pouco tempo, significa que o mesmo está tendo êxito em passar pela imagem, assim, seu IP é automaticamente bloqueado.

Exemplo com Recaptcha ...

Quer ler esse conteúdo completo? Tenha acesso completo