Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Micilini Roll

Verificador senha - Fraca-Media-Forte

Recommended Posts

inicialmente vc fazer pelo numero de caracteres: 5 = fraca, 7 - 10 media, 11>= forte.

vc pode bloquer o cadastro de senhas q contenham sequencias por exemplo: abc123, 123456879

sequencia de teclas:qwerty, zxcvb

forçar o usuario a cadastrar um simbolo, numero e uma letra maiuscula e assim vai.

Compartilhar este post


Link para o post
Compartilhar em outros sites

entendi so que no caso nao tem como fazer isso pelo php,tem que fazer isso por javascript certo,pois dai irei pegar em tempo real tudo que esta sendo digitado e automaticamente faz o seu esquema:

 

 

 

5 = fraca, 7 - 10 media, 11>= forte.

 

 

e mostra na tela!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, eu tenho 2 funções em javascript que fazem isso.

A primeira retorna um valor de 0 a 100 para a segurança da senha.

As seguintes características são analisadas:

- Se tem caracteres de a - z, se sim, se tem um ou mais;

- Se tem caracteres de A - Z, se sim, se tem um ou mais;

- Se tem números, se sim, se tem um ou mais;

- Se tem caracteres especiais, se sim, se tem um ou mais;

- Se tem mais de 4 caracteres;

- Se tem mais de 6 caracteres;

- Se tem mais de 8 caracteres;

 

A segunda função contem um array com senhas obvias.

Se a senha for igual a uma dessas senhas, considera uma senha inválida.

 

//+------------------------------------------------------------------------+
//| Função para informar o nível de segurança da senha digitada            |
//| Verifica se a senha é fácil                                            |
//+------------------------------------------------------------------------+

function securepass(_value) {
	
	//+-------------------------+
	//| Declaração de variaveis |
	//+-------------------------+
	var level = 0;
	var value = _value.replace(/\s/g,''); 
	var lowerCase = value.search(/[a-z]/);
	var upperCase = value.search(/[A-Z]/);
	var numbers = value.search(/[0-9]/);
  	var specialChars = value.search(/[@!#$%&*+=?|-]/);
  	var aLowerCase = value.split(/[a-z]/);
	var aUpperCase = value.split(/[A-Z]/);
	var aNumbers = value.split(/[0-9]/);
  	var aSpecialChars = value.split(/[@!#$%&*+=?|-]/) ;

	//+------------------------------------+
	//| Verifica o nivel da senha digitada |
	//+------------------------------------+
 	if (_value.length!=0) {
    	if (lowerCase>=0) {level += 10;}
    	if (upperCase>=0) {level += 10;} 
    	if (numbers>=0) {level += 10;}
		if (specialChars>=0) {level += 10;}

		if (aLowerCase.length>2) {level += 5;}
		if (aUpperCase.length>2) {level += 5;}
		if (aNumbers.length>2) {level += 5;}
		if (aSpecialChars.length>2) {level += 10;}
	    
	    if (value.length >= 4) {level += 5;}
      	if (value.length >= 6) {level += 10;}
        if (value.length > 8) {level += 20;}
    }
  
  	return level;
}

//+-------------------------------------------------------+
//| Verifica se a senha pertence a lista de senhas obvias | 
//+-------------------------------------------------------+
function obviuspass(_value) {

	var aPass = new Array('111111','11111111','112233','121212','123123','123456','1234567','12345678','131313','232323','654321','666666','696969','777777','7777777','8675309','987654','aaaaaa','abc123','abc123','abcdef','abgrtyu','access','access14','action','albert','alexis','amanda','amateur','andrea','andrew','angela','angels','animal','anthony','apollo','apples','arsenal','arthur','asdfgh','asdfgh','ashley','asshole','august','austin','badboy','bailey','banana','barney','baseball','batman','beaver','beavis','bigcock','bigdaddy','bigdick','bigdog','bigtits','birdie','bitches','biteme','blazer','blonde','blondes','blowjob','blowme','bond007','bonnie','booboo','booger','boomer','boston','brandon','brandy','braves','brazil','bronco','broncos','bulldog','buster','butter','butthead','calvin','camaro','cameron','canada','captain','carlos','carter','casper','charles','charlie','cheese','chelsea','chester','chicago','chicken','cocacola','coffee','college','compaq','computer','cookie','cooper','corvette','cowboy','cowboys','crystal','cumming','cumshot','dakota','dallas','daniel','danielle','debbie','dennis','diablo','diamond','doctor','doggie','dolphin','dolphins','donald','dragon','dreams','driver','eagle1','eagles','edward','einstein','erotic','extreme','falcon','fender','ferrari','firebird','fishing','florida','flower','flyers','football','forever','freddy','freedom','fucked','fucker','fucking','fuckme','fuckyou','gandalf','gateway','gators','gemini','george','giants','ginger','golden','golfer','gordon','gregory','guitar','gunner','hammer','hannah','hardcore','harley','heather','helpme','hentai','hockey','hooters','horney','hotdog','hunter','hunting','iceman','iloveyou','internet','iwantu','jackie','jackson','jaguar','jasmine','jasper','jennifer','jeremy','jessica','johnny','johnson','jordan','joseph','joshua','junior','justin','killer','knight','ladies','lakers','lauren','leather','legend','letmein','letmein','little','london','lovers','maddog','madison','maggie','magnum','marine','marlboro','martin','marvin','master','matrix','matthew','maverick','maxwell','melissa','member','mercedes','merlin','michael','michelle','mickey','midnight','miller','mistress','monica','monkey','monkey','monster','morgan','mother','mountain','muffin','murphy','mustang','naked','nascar','nathan','naughty','ncc1701','newyork','nicholas','nicole','nipple','nipples','oliver','orange','packers','panther','panties','parker','password','password','password1','password12','password123','patrick','peaches','peanut','pepper','phantom','phoenix','player','please','pookie','porsche','prince','princess','private','purple','pussies','qazwsx','qwerty','qwertyui','rabbit','rachel','racing','raiders','rainbow','ranger','rangers','rebecca','redskins','redsox','redwings','richard','robert','rocket','rosebud','runner','rush2112','russia','samantha','sammy','samson','sandra','saturn','scooby','scooter','scorpio','scorpion','secret','sexsex','shadow','shannon','shaved','sierra','silver','skippy','slayer','smokey','snoopy','soccer','sophie','spanky','sparky','spider','squirt','srinivas','startrek','starwars','steelers','steven','sticky','stupid','success','suckit','summer','sunshine','superman','surfer','swimming','sydney','taylor','tennis','teresa','tester','testing','theman','thomas','thunder','thx1138','tiffany','tigers','tigger','tomcat','toutcard','topgun','toyota','travis','trouble','trustno1','tucker','turtle','twitter','united','vagina','victor','victoria','viking','voodoo','voyager','walter','warrior','welcome','whatever','william','willie','wilson','winner','winston','winter','wizard','xavier','xxxxxx','xxxxxxxx','yamaha','yankee','yankees','yellow','zxcvbn','zxcvbnm','zzzzzz');
	for (var i = 0; i < aPass.length; i++) {
        if (aPass[i] == _value) return true;
    }
    return false;
}

 

Para implementar, utilizei Jquery.

Para sinalizar a força da senha, utilizei 3 divs sobrepostas, uma com a cor vermelha, outra com a cor amarela e outra com a cor azul.

Vermelha indica que a senha é muito fraca, amarelo média e azul forte.

No css, as 3 divs tem a largura igual a "0px".

Ao digitar a senha no campo, o código abaixo irá ser executado validando a senha inserida.

A medida que a função "securepass" ( que postei acima ) for retornando valores (de 0 a 100), o código abaixo manipula as larguras das 3 divs.

Quando a senha chega a um nível médio, a div vermelha ganha uma transparência, isso fará com que a div amarela fique visível, o mesmo acontece quando a senha chega a um nível forte, a div amarela fica transparente e a div azul aparece.

 

Não implementei a função obviuspass, que verifica se a senha é muito obvia.

Isso você terá implementar conforme a sua necessidade.

No meu caso, aguardo 2 segundos após a tecla ser pressionada. Se nenhuma outra tecla for pressionada (reiniciando a contagem) eu chamo a função obviuspass e verifico se faz parte da lista, em caso positivo, a senha será rejeitada.

//Implementa o evento "keyup" ao campo com o id igual a "pass-join", nesse exemplo representa o campo em que o utilizador irá inserir a senha.
$('#pass-join').bind('keyup', function() { 
        var value = $(this).attr('value');
        var w = Math.round((securepass(value)*50)/100);
        if (w<=15) {
            $('.login-secure-red').stop().animate({width: w+'px', opacity: 1}, 1000);
            $('.login-secure-yellow').stop().animate({width: w+'px', opacity: 1}, 1000);
            $('.login-secure-blue').stop().animate({width: w+'px', opacity: 1}, 1000);
        } else if (w>=16 && w<=30) {
            //aplica transparência a div vermelha
            $('.login-secure-red').stop().animate({width: w+'px', opacity: 0}, 1000);
            $('.login-secure-yellow').stop().animate({width: w+'px', opacity: 1}, 1000);
            $('.login--secure-blue').stop().animate({width: w+'px', opacity: 1}, 1000);
        } else {
            //aplica transparência a div vermelha e amarela
            $('.login-secure-red').stop().animate({width: w+'px', opacity: 0}, 1000);
            $('.login-secure-yellow').stop().animate({width: w+'px', opacity: 0}, 1000);
            $('.login-secure-blue').stop().animate({width: w+'px', opacity: 1}, 1000);
        }
    });

 

Abs!

Compartilhar este post


Link para o post
Compartilhar em outros sites

cuide tb para que o usuario não use o login ou o email como senha..

 

é bastante comum..

 

exemplo

 

email: fulano@foo.bar

senha: fulano

 

ou

 

senha: fulano@foo.bar

 

outro ponto comum é inserir data de nascimento..

 

se tiver somente números, bloqueie o cadastro..

se tiver somente letras, bloqueie o cadastro.. force a digitar letras e números, porém verifique se não há uma sequência repetitiva, por exemplo

 

a1a1a1a1

 

Se deseja restringir ainda mais verifique se há mistura de maiúsculas e minúsculas..

 

A1b9geCpo0l3#% é mais forte que a1b9gecpo0l3#%

Compartilhar este post


Link para o post
Compartilhar em outros sites

funções de manipulação de strings.. mas para esses casos o recomendado é usar ER (Expressões Regulares), ou REGEX em inglês

 

um bom exemplo está na dica do post #5.. siga a lógica da função e manda ver no google

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.