sábado, 13 de abril de 2019

Asp.Net - Utilizando CAPTCHAs


Olá amigos, neste mês de Outubro irei explorar um assunto muito comum quando nos deparamos em praticamente qualquer sistema web, o uso dos denominados “CAPTCHAs”. Para quem não sabe e de acordo com inúmeras referências encontradas na internet, o “CAPTCHA” significa um acrônimo da expressão "Completely Automated Public Turing test to tell Computers and Humans Apart" traduzindo significa: “Teste de Turing público completamente automatizado para diferenciação entre computadores e humanos”, simplificando, uma forma de distinguir se uma tarefa está sendo executada por um usuário ou um robô. Veremos neste artigo mais algumas finalidades deste recurso aplicando um exemplo prático utilizando o Microsoft Visual Studio 2015 junto com uma aplicação Asp.Net e a linguagem C#. Utilizarei a biblioteca “Captcha” que poderá ser adquirida e instalada através do “Nuget”.

Finalidade

A finalidade do uso do CAPTCHA são inúmeras, para quem tiver maiores interesses recomendo visitar o link: http://www.captcha.net/, o qual aborda diversas situações deste recurso. O intuito deste artigo seria implementá-lo a fim de proteger o cadastro de um usuário em um site ou sistema web. Um exemplo básico seria a criação de um e-mail na Microsoft. Até poucos anos atrás, a maioria desses serviços sofriam de um tipo específico de ataque: os "bots", os quais se inscreviam para milhares de contas de e-mails a cada minuto. A solução para este problema foi usar CAPTCHAs para garantir que somente os seres humanos pudessem obter estas contas, a fim de evitar abusos por scripts automatizados. Em um sistema web aberto ao público também podemos encontrar problemas como os descritos anteriormente e por sorte podemos diminuir o risco dos mesmos com o uso dos CAPTCHAs.

Baixando e Instalando o “Captcha” através do Nuget

Abra o Miscrosoft Visual Studio 2015 e crie um website do início clicando em “File/New/Website...”. Para fins didáticos iremos criar uma aplicação do tipo Asp.net. Localize o menu “Tools/Nuget Package Manager/Manage Nuget Packages for Solution...”. Pesquise pelo item “Captcha” na caixa de pesquisa, ver Imagem 01.

Figura 01: Biblioteca Captcha.


Após selecionar a biblioteca, localize na região direita a “solution” para instalá-la. Ver Imagem 02.

Figura 02: Instalando o “Captcha”.

Após seguir estas etapas, automaticamente será aberta uma página contendo todas as informações para o uso desta biblioteca em diversas plataformas, inclusive na Asp.Net. Dentro do próprio Visual Studio também será aberto um arquivo “txt” também contendo instruções de implementações. Ver Figura 03.

Figura 03: Instruções de uso.

Criando um exemplo

Seguindo como base as instruções de uso desta biblioteca, adicione no webform o captcha, um textbox e um button. Ver Imagem 04.

Figura 04: Layout proposto.


Abaixo a codificação referente:

    <div>
        <table class="auto-style1">
            <tr>
                <td>
<BotDetect:WebFormsCaptcha ID="ExemploCaptcha" runat="server" Width="290px" />
                </td>
            </tr>
            <tr>
                <td>
<asp:TextBox ID="CaptchaCodeTextBox" runat="server" Width="272px" /></td>
            </tr>
            <tr>
                <td>
<asp:Button ID="Button1" runat="server" Text="Testar" Width="205px" OnClick="Button1_Click1" />
                </td>
            </tr>
        </table>
    </div>
Listagem 01.
A Tag “BotDetect” fará todo o trabalho do captcha. No próprio componente teremos os caracteres para validação, o botão atualizar e embaralhar letras e outro botão para emitir o som das letras (para deficientes visuais).
Usaremos uma quantidade mínima de linhas, no evento “Click” do botão “testar” teremos a seguinte codificação. Listagem 02.

protected void Button1_Click1(object sender, EventArgs e)
{
      bool validar = ExemploCaptcha.Validate(CaptchaCodeTextBox.Text);
      CaptchaCodeTextBox.Text = null;

      if (!validar)
      {
          Response.Write("Erro na validação!");
      }
      else
      {
          Response.Write("Validação correta!");
      }
}
Listagem 02.

Criaremos uma variável booleana que servirá para validar o texto digitado. Implementaremos o método “Validate” do componente “ExemploCaptcha” o qual nos retornará “verdadeiro” ou “falso”. Uma ideia para retornar o resultado seria pelo método “Response.Write” através de uma condição. Ver Figura 05.

Figura 05: Resultado final.

Conclusões

O recurso apresentado neste artigo é utilizado em quase na totalidade de sites que existem a necessidade da utilização de um cadastro por exemplo. É comum também encontrarmos sistemas web que faz o uso deste mecanismo. O “Captcha” foi inventado com o intuito de diminuir o ataque de robôs, scripts maliciosos, entre outros. Existem inúmeras bibliotecas no Visual Studio para esta tarefa, procurei explorar a “Capctha”, sendo de fácil aquisição, instalação e utilização.
Desejo a todos uma ótima leitura. Abraços

Referências




Nenhum comentário:

Postar um comentário