PASSWORD SEGURA
Uma das tarefas importantes na criação de websites dinâmicos é a autenticação e controle de acesso dos utilizadores. A forma mais comum de se realizar controle de acesso é por meio de um par de informações, username ou email e senha, que são armazenados numa base de dados para que seja possível verificar as credenciais do utilizador no momento de login no sistema.
A forma mais segura de armazenar senhas numa base de dados é através da utilização de funções de criptografia em PHP.
HASH
Função hash - é um conjunto de caracteres de tamanho fixo gerado por um algoritmo matemático
Algoritmos de hash:
função md5 (32 caracteres) e função sha1(40 caracteres) e password_hash (60 caracteres)
Pouco provável mas não impossível, dois valores diferentes gerarem a mesma saída.
É desaconselhado usar a função md5 pois na internet existem tabelas que ligam o valor original ao hash!
sha1 It is not recommended to use this function to secure passwords
Em PHP é aconselhado utilizador a função password_hash() que utiliza o algoritmo bcrypt ou o algoritmo Blowfish
string password_hash ( string $senha , integer $algoritmo, array $opções )
Onde:
- $senha é a senha fornecida que deve ser encriptada.
- $algoritmo é o algoritmo de hash que deve ser utilizado no processo. Os algoritmos suportados são:
- PASSWORD_DEFAULT – algoritmo bcrypt. Se usado, recomenda-se armazenar o resultado do hash em um campo que permite até 255 caracteres, por questões de boas práticas.
- PASSWORD_BCRYPT – Usa o algoritmo CRYPT_BLOWFISH para criar o hash, resultando em uma string de exatos 60 caracteres.
A função password_hash gera um salt no momento de gerar um hash.
Um salt é um pouco de dados adicionais que tornam os hashes significativamente mais difíceis de quebrar.
A função password_hash () irá criar um salt aleatório sendo geralmente a abordagem mais fácil e segura.
Podemos ver que a função password_hash vai gerar hash de 60 caracteres da password "ester@oliveira_2021"
A senha introduzida pelo utilizador é enviada ao script de processamento por meio do método POST, e seu hash é gerado da seguinte maneira:
$hashsenha = password_hash($_POST['senha'], PASSWORD_DEFAULT);
$hashsenha = trim(password_hash($_POST['senha'], PASSWORD_DEFAULT));
onde ‘senha‘ é o nome do campo de origem do valor da senha na página de registo, e $hashsenha é a variável que irá conter o hash da senha criado, o qual deverá então ser armazenado na base de dados juntamente com os demais dados de login necessários.
A função trim() é usada para eliminar eventuais espaços em branco no início e no final da string gerada.
Função password_verify()
A função htmlspecialchars () converte alguns caracteres especiais predefinidos em entidades HTML, sendo um dos métodos mais populares para prevenir ataques Cross-Site Scripting (XSS).
Os invasores também podem usar XSS para espalhar malware, reescrever o conteúdo de sites, causar problemas em redes sociais e phishing para credenciais de utilizador.
& (ampersand) torna-se &
$str = "This is some <b> bold </b> text.";
echo htmlspecialchars($str);
?>
Sem comentários:
Enviar um comentário