Hay ocasiones en los que simplemente se le crea una cuenta a un usuario y se le asigna una contraseña segura, luego este usuario puede cambiar esa contraseña… pero igual debe elegir una contraseña segura.
Y este es el asunto, no todos los usuarios quieren trabajar con contraseñas seguras. Tú dirás:
Se les obliga a usar contraseñas seguras y punto, pero eso no siempre funciona en la vida real.
Muchas veces los dueños de la empresa o la alta dirección quieren usar el password de toda su vida. Tú puedes hacer denodados esfuerzos: les explicas con ejemplos, con videos, con pruebas, etc… hasta que al fin los convences… luego de tu gran esfuerzo te dicen:
pata, yo quiero seguir usando mi viejo password ya?
Qué te queda? renegar y acatar la orden (previo: Yo se lo advertí!!).
Pero como nosotros estamos del lado de los sensatos, vamos a invertir nuestro tiempo creando una funcionalidad que nos genera una expresión regular para exigir contraseñas seguras, basado en las condiciones que elijas.
Código aspx:
<html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> <style type="text/css"> * { font-family: Verdana, Arial; font-size: 11px; height: 21px; } table { border-collapse: collapse; background-color: Orange; } th { background-color: Gray; color: White; font-size: 13px; } th, td { padding: 5px; white-space: nowrap; } </style> </head> <body> <form id="form1" runat="server"> <table> <tr> <th> Expresiones Regulares para contraseñas seguras </th> </tr> <tr> <td> <asp:CheckBox ID="chkUpper" runat="server" Text="Incluir mayúsculas" /> </td> </tr> <tr> <td> <asp:CheckBox ID="chkLower" runat="server" Text="Incluir minúsculas" /> </td> </tr> <tr> <td> <asp:CheckBox ID="chkDigits" runat="server" Text="Incluir dígitos" /> </td> </tr> <tr> <td> <asp:CheckBox ID="chkSpecialChars" runat="server" Text="Incluir Caracteres especiales (!@#$%^&*_+-/)" /> </td> </tr> <tr> <td> <strong>Longitud</strong> <br /> Mínima: <asp:TextBox ID="txtMin" runat="server" Width="54px"></asp:TextBox> <br /> Máxima: <asp:TextBox ID="TxtMax" runat="server" Width="54px"></asp:TextBox> <br /> Nota: Si desean una longitud exacta, pongan la misma longitud en ambos textboxes </td> </tr> <tr> <td style="text-align: right"> <asp:Button ID="btnGenerate" runat="server" Text="Generar Expresión Regular" /> </td> </tr> <tr> <td style="text-align: center"> <asp:TextBox ID="txtRegularExpression" Width="95%" Rows="5" TextMode="MultiLine" runat="server"></asp:TextBox> </td> </tr> </table> <div style="background-color: yellow; margin-top: 30px; height: 70px; width: 500px"> Haga sus pruebas aquí: <br /> Texto a validar: <asp:TextBox ID="TextBox1" ValidationGroup="test" runat="server"></asp:TextBox> <asp:RegularExpressionValidator ID="RegularExpressionValidator1" ValidationGroup="test" runat="server" ControlToValidate="TextBox1" ValidationExpression="" ErrorMessage="*"></asp:RegularExpressionValidator> <asp:Button ID="Button1" runat="server" ValidationGroup="test" Text="Validar expresión..." /> </div> </form> </body> </html>
Código VB.NET:
Protected Sub btnGenerate_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnGenerate.Click Dim RegExp As New StringBuilder 'longitud If txtMin.Text.Length > 0 AndAlso IsNumeric(txtMin.Text) Then RegExp.Append("(?=^.{" & txtMin.Text) If txtMin.Text <> TxtMax.Text Then RegExp.Append(",") If TxtMax.Text.Length > 0 AndAlso IsNumeric(TxtMax.Text) Then RegExp.Append(TxtMax.Text) End If End If RegExp.Append("}$)") End If 'dígitos If chkDigits.Checked Then RegExp.Append("(?=.*\d)") 'caracteres especiales If chkSpecialChars.Checked Then RegExp.Append("(?=.*\W+)") 'mayúsculas If chkUpper.Checked Then RegExp.Append("(?=.*[A-Z])") 'minúsculas If chkLower.Checked Then RegExp.Append("(?=.*[a-z])") RegExp.Append(".*$") txtRegularExpression.Text = RegExp.ToString RegularExpressionValidator1.ValidationExpression = RegExp.ToString End Sub
Es todo, el código está completo, sólo añadan una página aspx y peguen el código respectivo. Luego ejecuten la página, y marquen algunas de las opciones… presionen el botón Generar Expression Regular y la expresión se mostrará en la caja de texto mostrada, Uds pueden usar esta funcionalidad para generar las expresiones regulares que luego le asignarán a su control asp:RegularExpressionValidator
Aprovecho para recomendarles una herramienta imprescindible para construir / validar expresiones regulares: Expresso.
Como para finalizar el post, te dejo un enlace que genera contraseñas seguras, como para que te ahorres el uso de neuronas generando contraseñas: http://strongpasswordgenerator.com/
;)
No hay comentarios.:
Publicar un comentario