ASP .NET - Medindo a força da senha com JavaScript


 Hoje vamos recordar um pouco de JavaScript básico medindo a força da senha em uma aplicação ASP .NET Web Forms.

Neste artigo vou mostrar como podemos verificar a força de uma senha fornecida por um usuário fornecendo informações que indicam se a senha é fraca ou forte em uma aplicação ASP .NET usando JavaScript.

Algumas senhas são muito fracas e nunca devem ser utilizadas, geralmente elas incluem data de nascimento, números de telefone, números ou letras repetidos e nomes pessoais.

Outras podem ser descritas como fracas ou fortes de acordo com o comprimento da senha e do tipo de caracteres que ela contém. Por exemplo, se sua aplicação permite senhas de quatro caracteres de comprimento com a utilização das 26 letras do alfabeto, o número máximo de senhas possíveis é de aproximadamente 450.000. Este é um número pequeno para um computador moderno e um ataque de força bruta poderá quebrar a senha com certa facilidade.

Podemos aumentar o número de senhas possíveis, permitindo que caracteres adicionais sejam incluídos na senha. Se continuarmos com uma senha de quatro caracteres mas permitimos uma combinação de letras maiúsculas e minúsculas, as combinações possíveis aumentam de 450.000 para cerca de 7,5 milhões. Adicionando dígitos numéricos, símbolos e espaços para aumentar o conjunto de caracteres a 100 podemos chegar a 100 milhões de senhas possíveis com apenas quatro caracteres, o que é um número considerável.

Outra forma de aumentar o número de combinações possíveis é aumentar o comprimento da senha. Com os cem caracteres fornecidos por letras, dígitos e símbolos, estendendo a senha para dez caracteres de tamanho temos 100.000.000.000.000.000.000 combinações possíveis. Um número tão alto faz com que um ataque de força bruta não seja tão temido.

Nosso exemplo não é muito sofisticado nem muito preciso mas dá uma ideía de como usar JavaScript para medir a força da senha usando algumas regras básicas.

Criando o projeto Web Forms no VS 2017 Community

Abra o VS 2017 Community e clique em New Project;

A seguir selecione a linguagem Visual C# ou VB .NET -> Web  e o template ASP .NET Web Application(.NET Framework);

Informe o nome Aspn_ForcaSenha e clique no botão OK;

A seguir selecione Empty e marque Web Forms e clique em OK;

Agora no projeto criado inclua uma página via menu Project -> Add New Item selecionando o template WebForm e informando o nome Registro.aspx.

A seguir crie uma nova pasta no projeto chamada js via menu Project -> New Folder.

Depois inclua um novo arquivo nesta pasta via menu Project -> Add New Item selecionando o template JavaScript File e informando o nome verificaForcaDaSenha.js.

Neste arquivo inclua o código abaixo:

 function verificaForcaDaSenha()
 {
        var passwordTextBox = document.getElementById("txtSenha");
        var password = passwordTextBox.value;
        var caracteresEspeciais = "!£$%^&*_@#~?";
        var passwordPontos = 0;
        passwordTextBox.style.color = "white";
        // Contém caracteres especiais
        for (var i = 0; i < password.length; i++)
        {
            if (caracteresEspeciais.indexOf(password.charAt(i)) > -1)
            {
                  passwordPontos += 20;
                  break;
            }
        }
        // Contém numeros
        if (/\d/.test(password))
            passwordPontos += 20;
        // Contém letras minúsculas
        if (/[a-z]/.test(password))
            passwordPontos += 20;
        // Contém letras maiúsculas
        if (/[A-Z]/.test(password))
            passwordPontos += 20;
        if (password.length >= 8)
            passwordPontos += 20;
        var forcaSenha = "";
        var backgroundColor = "red";
        if (passwordPontos >= 100)
        {
           forcaSenha = "Forte";
            backgroundColor = "green";
        }
        else if (passwordPontos >= 80)
        {
           forcaSenha = "Média";
           backgroundColor = "gray";
        }
        else if (passwordPontos >= 60)
        {
            forcaSenha = "Fraca";
            backgroundColor = "maroon";
        }
        else
        {
           forcaSenha = "Muito Fraca";
           backgroundColor = "red";
        }
        document.getElementById("lblmensagem").innerHTML = forcaSenha;
        passwordTextBox.style.backgroundColor = backgroundColor;
 }

Agora vamos abrir a página Registro.aspx e incluir o seguinte código :

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Registro.aspx.cs" Inherits="Aspnet_ForcaSenha.Registro" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Medindo a força da Senha</title>
    <script src="js/verificaForcaDaSenha.js"></script>
</head>
<body>
    <h2>Macoratti.net</h2>
    <hr />
    <form id="form1" runat="server">
        <div>
         <asp:Label ID="lblTexto" Text="Informe a senha" runat="server"></asp:Label>
         <br />
         <asp:TextBox ID="txtSenha" runat="server" TextMode="Password" onkeyup="verificaForcaDaSenha()"></asp:TextBox>
         <asp:Label ID="lblmensagem" runat="server"></asp:Label>
        </div>
    </form>
</body>
</html>

Neste código estamos referenciando o nosso arquivo JavaScript verificaForcaDaSenha.js e fazendo a chamada da função no evento onKeyup.

Executando o projeto iremos obter:

Bem básico e simples usando apenas JavaScript.

Pegue o codigo aqui : Aspnet_ForcaSenha.zip

Até o próximo artigo...

"Se dissermos que temos comunhão com ele (Deus), e andarmos em trevas, mentimos, e não praticamos a verdade."
1 João 1:6

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

 

             Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter
 

Referências:


José Carlos Macoratti