Postagem em destaque

Verificando requisitos de complexidade de senha

Nos dias de hoje ainda existem pessoas que não se preocupam com a sua segurança no momento de criar suas senhas e até mesmo usam a mesma senha para diversos serviços; sejam eles para fins profissionais ou pessoais. Definindo critérios simples como data de nascimento, nome do cachorro ou até mesmo o clássico 1234meunome; essas coisas acontecem nas melhores famílias.

Vou demonstrar como criar uma função que verifica os requisitos de complexidade de uma senha, afim de evitar os problemas que mencionei anteriormente.

Os requisitos de complexidade que determinei:

Mínimo de 8 caracteres.

Contendo no mínimo:

1 caractere em minúsculo.
1 caractere em maiúsculo.
1 Dígito de 0 à 9
1 caractere especial.

Como você pode observar no código abaixo, nada melhor do que uma boa expressão regular para tal finalidade. A principio fiquei matutando como montaria a expressão capaz de validar a quantidade de caracteres e ao mesmo tempo todos os demais requisitos; então percebi que se usa-se uma expressão simples, ela ficaria enorme e talvez não chegaria ao objetivo.

Nesse caso a alternativa foi montar uma expressão regular em Perl, ela é cabulosa, sinistra, possui recursos condicionais que facilitaria a minha vida e a conclusão da tarefa.

Script: xsenha_complexa.sh


#!/bin/bash

#---------------------------------------------------------------
# Data:         29 de Novembro de 2016
# Criado por:   Juliano Santos [SHAMAN]
# Script:       xsenha_complexa.sh
# Descrição:    Verifica os requisitos de complexidade de senha
# Página:       http://www.shellscriptx.com.br
#---------------------------------------------------------------

# A Função verifica a senha informada aplicando
# uma expressão regular em Perl que força atender
# aos seguintes requisitos de complexidade:
# Mínimo 8 caracteres.
#  ""    1 caractere minúsculo.
#  ""    "    ""     maiúsculo.
#  ""    "    ""     caractere especial.
#  ""    "  dígito de 0 à 9
if grep -qP '^.*(?=.{8,})(?=.*[A-Z])(?=.*\d)(?=.*\W)(?=.*[a-z]).*$'; then
 # SUCESSO
 # Armazena o retorno do comando.
 RETVAL=$?
 
 # Mensagem de êxito
 echo 'OK'
 # Finaliza script com status: 0
 exit $RETVAL
else
 # FALHA
 # Armazena o retorno do comando
 RETVAL=$?
 
 # Mensagem de erro
 echo 'A senha não atende aos requisitos de complexidade' 1>&2
 # Finaliza script com status: 1
 exit $RETVAL
fi
# FIM

Observe as tentativas na imagem a seguir:

Comentários

Contato

Nome

E-mail *

Mensagem *