Programação

segunda-feira, 24 de abril de 2023

Mysqli Object-Oriented

 https://supunkavinda.blog/php/mysqli-prepared-statements 

https://www.w3schools.com/php/php_mysql_select_where.asp


Projeto - login na barra nav


Se o utilizador não tem a sessão ativa, aparece o botão LOGIN, caso contrário, aparecerá o botão LOGOUT.


SEGURANÇA DE PASSWORDS
forma mais segura de armazenar senhas numa base de dados é através da utilização de funções de criptografia em PHP. 

Algoritmos de hash: 

          função md5 (32 caracteres) e função sha1(40 caracteres)  e password_hash (60 caracteres)

É desaconselhado usar a função md5 pois na internet existem tabelas que ligam o valor original ao  hash! e sha1 It is not recommended to use this function to secure passwords  


RECOMENDADO a utilização da função password_hash

Para verificar se as passwords são iguais deve-se utilizar a função password_verify

password_verify(string $passwordstring $hash): bool




REGISTAR UTILADOR NA TABELA DA BD
 


            
LOGIN









DADOS DA TABELA users DA BASE DADOS (hash da password - função sha1)



Dados inseridos no formulário não são iguais aos da tabela users pelo que vai dar erro "Os dados introduzidos são inválidos"




Com a introdução de dados de login corretos, a página é redirecionada (neste caso para index.php) e o botão passa a LOGOUT







Restante código (formulário)




FUNÇÕES HASH:  sha1  

Apesar de não ser tão segura é apresentado exemplo da sua utilização




PHP - HASH e htmlspecialschars
https://bdprogramacao.blogspot.com/2021/11/php-new.html

 
Técnicas para Evitar Ataques 

Esses ataques  baseiam-se principalmente em explorar falhas no código escrito sem se preocupar com segurança. Nunca confie em nenhum tipo de entrada, especialmente aquela que vem do lado do cliente, mesmo que venha de um combobox, um campo de entrada escondido (hidden) ou um cookie. O primeiro exemplo mostra como uma consulta inocente pode causar desastres.

  • Nunca conecte à base de dados como um super utilizador ou como o dono da base de dados. Use sempre utilizadores personalizados com privilégios bem limitados.
  • Use declarações preparadas com variáveis associadas. Eles são fornecidos pelo PDOpor MySQLi e por outras bibliotecas.
  • Verifique se a entrada fornecida tem o tipo de dados esperado. O PHP tem uma ampla gama de funções de validação de entrada, desde as mais simples encontrado em Funções de variável e em Funções de tipo de caracter (por exemplo, is_numeric()ctype_digit() respectivamente) e até mesmo com suporte de Expressões regulares compatíveis com Perl
  • Se a aplicação espera por entradas numéricas, considere verificar os dados com a função is_numeric(), ou silenciosamente mudar o seu tipo usando settype(), ou usar a representação numérica usando a função sprintf().


ATAQUES SQL INJECTION 

Cross-Site Scripting (XSS)

Declarações preparadas com variáveis associadas. Eles são fornecidos pelo PDO, por MySQLi e por outras bibliotecas.


utilização de funções
 mysqli_prepare
mysqli_bindparam
mysqli_execute
 
 







Sem comentários:

Enviar um comentário