8 jun 2012

// // Comentar

Validar complejidad de claves de lado del cliente en ASP .NET

Muchas veces necesitamos en nuestros desarrollos obligar a que el usuario ingrese una clave con cierto nivel de complejidad por razones de seguridad, en este post, detallaré una forma fácil de poder implementar esto en una aplicación ASP .NET de lado del cliente, no solo validando que la clave sea compleja, sino que también indicando el nivel de complejidad mientras va escribiendo.

image

Introducción

Para poder ejemplificar esto, vamos a crear un formulario de cambio de clave, el cual tendremos estructurado como la imagen anterior, no consideraremos el código para hacer la validación de la clave anterior o el cambio de clave, únicamente nos centraremos en validar la complejidad de la nueva clave e indicarle esto al usuario.

Mostrando el nivel de complejidad

Para realizar esto, recurriremos al control PasswordStrength del Ajax Control Toolkit que nos permitirá establecer algunos parámetros de complejidad que vamos a requerir para la clave y según estos parámetros y criterios definidos nos irá mostrando en pantalla el nivel de complejidad que tiene la clave que estamos escribiendo.

<asp:TextBox runat="server" ID="txtNuevaClave" TextMode="Password" ValidationGroup="Enviar" />
<act:PasswordStrength ID="txtNuevaClave_PasswordStrength" runat="server" 
    Enabled="True" MinimumNumericCharacters="1" PrefixText="Complejidad: " 
    TargetControlID="txtNuevaClave" TextStrengthDescriptions="Baja;Media;Alta" 
    MinimumLowerCaseCharacters="1" PreferredPasswordLength="6" 
    RequiresUpperAndLowerCaseCharacters="True">
</act:PasswordStrength>

Este código nos permitirá ver el efecto que se aprecia en la imagen anterior al momento de digitar la nueva clave, para lo cual necesitamos configurar algunas propiedades:


MinimumNumericCharacters – Esto nos indica como mínimo cuantos caracteres numéricos debe tener la clave.
PrefixText – Es el prefijo que ira al momento de mostrarse la complejidad de la clave.
TargetControlID – Es el control al cual estará asociado esta validación.
TextStrengthDescriptions – Es la descripción que tendrán los distintos niveles de seguridad que consideremos, separados por ponto y coma.
MinimumLowerCaseCharacters – Esto nos indica como mínimo cuantos caracteres en minúscula se debe considerar, pero necesita de la propiedad RequiresUpperAndLowerCaseCharacters para tener efecto.
PreferredPasswordLength – Esto nos indica el tamaño mínimo requerido para considerar la clave en el ultimo nivel de validación, en el caso del ejemplo “Alta”, tener en cuenta que esto solo sirve para evaluar el nivel de complejidad, pero no valida el TextBox que tenga como mínimo esta cantidad de dígitos.
RequiresUpperAndLowerCaseCharacters – Esta propiedad sirve para activar las propiedades de mínimo minúsculas y mayúsculas requeridas.


Con esta configuración mínima, estamos pidiendo una clave que tenga al menos 6 dígitos, con una minúscula y un numero al menos.


Validando el nivel del complejidad


Ya anteriormente hicimos que se muestre el nivel de complejidad de una clave según los parámetros establecidos, pero esto no realiza una validación al momento de enviar estos datos, simplemente nos indica la complejidad que tiene lo que vamos escribiendo.


Entonces para validar la clave, haremos uso del control RegularExpressionValidator que si nos permitirá realizar esta validación con una expresión regular.



<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" 
    ControlToValidate="txtNuevaClave" 
    ErrorMessage="La clave debe ser como minimo de 6 digitos y al menos un número" 
    ForeColor="Red" 
    ValidationExpression="(?!^[0-9]*$)(?!^[a-zA-Z]*$)^([a-zA-Z0-9]{6,12})$" 
    ValidationGroup="Enviar">**</asp:RegularExpressionValidator>
<act:ValidatorCalloutExtender ID="RegularExpressionValidator1_ValidatorCalloutExtender" 
    runat="server" Enabled="True" TargetControlID="RegularExpressionValidator1">
</act:ValidatorCalloutExtender>

Aquí tenemos el control con extender del Ajax Control Toolkit agregado para que muestre el mensaje de forma mas amigable.


En este control básicamente configuramos el mensaje que debe mostrarse y la expresión regular que hará la misma validación de mínimo 6 caracteres alfanuméricos.


image


Con esto logramos exigirle al usuario un cierto nivel de complejidad para su clave y también indicarle el nivel de complejidad que va teniendo el texto que va digitando de una forma muy intuitiva.


Espero les sea de utilidad y si pueden aportar con otras formas alternativas, pues bienvenido.

0 comentarios: