PDA

Ver la Versión Completa : [Autobombo DEC] Plugin Pass Meter para jQuery


dec
31-01-2008, 23:01:25
Hola,

Sé que por aquí tiene que haber admiradores de jQuery (http://www.jquery.com/), no puede ser de otro modo, porque esta librería (¿o era biblioteca?) de JavaScript es admirable. Vamos, que viva la madre que parió al autor, podría decirse. Pues bien, que he escrito un sencillo plugin para jQuery de que quería informar por aquí, por si puede resultar de utilidad a alguien. ¡Y ya de paso podemos charlar un poco si queréis! :p

El plugin lo he llamado en un alarde de originalidad sin precedentes "Pass Meter", y, puede usarse para "medir" la "fuerza" de una contraseña. Su funcionamiento es muy sencillo: se "acopla" a un elemento "INPUT", preferiblemente del tipo "password", y el plugin muestra una imagen de fondo, que va cambiando según el usuario escribe en el "INPUT", y que indica la "fuerza" de la contraseña "gráficamente".

Como veo que me lío y que más vale un ejemplo que ciento volando, aquí van ya una serie de enlaces sobre el plugin, para que podáis descargarlo, probarlo, y lo que queráis:

- Ejemplo "en línea" del plugin (http://www.bitacora.davidesperalta.com/archives/projects/passmeter/example.html)

- Descarga directa del plugin + jQuery (http://www.bitacora.davidesperalta.com/archives/projects/passmeter/passmeter.zip)

- Página de mi bitácora dedicada al plugin (http://www.bitacora.davidesperalta.com/jquery-pass-meter/)

- Página del plugin Pass Meter en jQuery.com (http://plugins.jquery.com/project/passmeter)

PD. Algunos llaman SPAM al autobombo. Pero yo no soy de esos. ¿O sí? :eek: :p

dec
01-02-2008, 01:08:09
Hola,

Hombre, ni un "no está mal", o "vale, veremos qué tal"... ¡con amigos así quien necesita enemigos! :D :D :D

PD. ¡Arriba, arriba! :D :D

egostar
01-02-2008, 01:19:58
Hola,

Hombre, ni un "no está mal", o "vale, veremos qué tal"... ¡con amigos así quien necesita enemigos!

PD. ¡Arriba, arriba! :D :D

:D:D:D, nada mal tu nuevo juguetito amigo Dec, una pregunta este PlugIn tiene versión para Win32 :D

Salud OS

dec
01-02-2008, 01:45:09
Hola,

¡Esto ya es otra cosa! ;)

El plugin es multiplataforma. Me han dicho que va bien en el iPhone y to, ¡no te digo más! :D :D

xEsk
01-02-2008, 02:48:16
Hola, he probado el ejemplo "en línea", para ver que tal funciona, xD Y funciona bien... xD

Es "duro de pelar", no se conforma con cualquier cosa para decir que es un "buen password" xDD

Imagino que seria complicado, pero ya que detecta si pones siempre la misma letra (y te lo cuenta como "cutre password"), podría comprobar "mini secuencias", ya que el password: "1212121212121212121212..." lo considera bueno.

Cuando uno no tiene que hacerlo, pedir es muy fácil xDDDD

Saludos.

dec
01-02-2008, 02:59:10
Hola,

Bueno. Tengo que decir que en realidad el plugin no sigue ningún "estándar" (ni sé si existe) para comprobar la "dureza" de una contraseña, sino que más bien puede tomarse como una especie de "indicativo". Además añado que el corazón del plugin, mejor dicho, el algoritmo que se encarga de comprobar la dureza de la contraseña no lo he escrito yo, sino que lo he adaptado de otro plugin para jQuery al que me parecía que podía añadir algo.

De todas formas huelga decir que tu sugerencia es buena xEsk, y que, aunque no puedo prometer nada, todo se andará, como suele decirse. ¡Muchas gracias! ;)

Casimiro Notevi
01-02-2008, 09:57:36
Veo que lo que prima es la longitud, creo que el algoritmo no es demasiado eficaz.

dec
01-02-2008, 16:27:02
Hola,

Hombre, el algoritmo podrá mejorarse lo que se quiera (de hecho, reconozco que yo trabajé más en la "integración" con jQuery, en lo que es el plugin, en cómo puede usarse) pero, tengo que decir que no se basa sólo en la longitud. Aquí están los dos métodos principales del plugin, para que pueda verse. Ah, ¡y se admiten sugerencias! :)


function checkRepetition(pLen, str){
var res = '';
for(i = 0; i < str.length; i++){
var repeated = true;
for(j = 0; j < pLen && (j + i + pLen) < str.length; j++){
repeated = repeated && (str.charAt(j + i) == str.charAt(j + i + pLen));
}
if(j < pLen){
repeated = false;
}
if(repeated){
i += (pLen - 1);
repeated = false;
}else{
res += str.charAt(i);
}
}
return res;
};

function passwordStrength(password){
var score = 0;
if(password.length == 0){
return emptyPassResult;
}else if(password.length < 4 ){
return shortPassResult;
}
score += (password.length * 4);
score += (checkRepetition(1, password).length - password.length);
score += (checkRepetition(2, password).length - password.length);
score += (checkRepetition(3, password).length - password.length);
score += (checkRepetition(4, password).length - password.length);
// password has 3 numbers
if(password.match('/(.*[0-9].*[0-9].*[0-9])/')){
score += 5;
}
// password has 2 sybols
if(password.match('/(.*[!,@,#,$,%,^,&,*,?,_,~].*[!,@,#,$,%,^,&,*,?,_,~])/'))
{
score += 5;
}
// password has Upper and Lower chars
if(password.match('/([a-z].*[A-Z])|([A-Z].*[a-z])/')){
score += 10;
}
// password has number and chars
if(password.match('/([a-zA-Z])/') && password.match('/([0-9])/')){
score += 15;
}
// password has number and symbol
if(password.match('/([!,@,#,$,%,^,&,*,?,_,~])/')
&& password.match('/([0-9])/')){
score += 15;
}
// password has char and symbol
if(password.match('/([!,@,#,$,%,^,&,*,?,_,~])/')
&& password.match('/([a-zA-Z])/')){
score += 15;
}
// password is just a nubers or chars
if(password.match('/^\w+$/') || password.match('/^\d+$/')){
score -= 10;
}
if(score < 0){
score = 0;
}
if(score > 100){
score = 100;
}
if(score < 34){
return badPassResult;
}
if(score < 68){
return goodPassResult;
}
return strongPassResult;
};

Casimiro Notevi
01-02-2008, 20:06:42
Hola,
Hombre, el algoritmo podrá mejorarse lo que se quiera (de hecho, reconozco que yo trabajé más en la "integración" con jQuery, en lo que es el plugin, en cómo puede usarse) pero, tengo que decir que no se basa sólo en la longitud. Aquí están los dos métodos principales del plugin, para que pueda verse. Ah, ¡y se admiten sugerencias! :)

Lo comentaba porque (probándolo en línea) sólo consideraba "fuerte" el password cuando tiene una longitud bastante considerable.
De todas formas, no me hagas mucho caso, era sólo una apreciación tras una ligera prueba. Seguramente es que los passwords que he usado eran realmente "flojos" y el algoritmo los ha identificado correctamente: no eran buenos :)