https://supunkavinda.blog/php/mysqli-prepared-statements
https://www.w3schools.com/php/php_mysql_select_where.asp
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
$password
, string $hash
): boolDados 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"

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 PDO, por 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
PDO
PDO pode funcionar em 12 sistemas de base de dados diferentes, enquanto o MySQLi funciona apenas com base de dados MySQL.
O PDO (PHP Data Objects) é uma extensão em PHP que fornece uma camada de abstração de acesso a base de dados.
Existem duas maneiras de se conectar a uma base de dados usando PHP:
- MySQLi (“i” stands for improved)
- PDO (PHP Data Objects)
Conexão com o servidor MySQL
MySQLi Procedural
$con = mysqli_connect($host, $username, $senha, $dbname);
Estilo MySQLi Object-Oriented
$con = new mysqli($host, $username, $senha, $dbname)
PDO
$con = new PDO("mysql:host=$host;dbname=$bdname",$username,$senha);
MySQLi Procedural
mysqli_query($con, $query)
MySQLi Object-Oriented
$con->query($query);
PDO
$stmt = $con->prepare($query); $stmt->execute();
$con->close();
Abordagem MySQLi procedural:
Abordagem MySQLi Orientada a Objetos:
CREATE TABLE `Student` ( `NIF` int(13) NOT NULL, `Name` varchar(255) NOT NULL, `City` varchar(255) NOT NULL, PRIMARY KEY (`NIF`) );
Os programadores orientados a objetos preferem o PDO devido à sua compatibilidade com um grande número de bases de dados.
PDO: O PDO tem muitas instruções embutidas que ajudam nesses casos.
- PDOStatement::fetchAll(): Retorna o resultado na forma de um array, contendo todas as linhas do resultado. (mais usada)
Os benefícios reais do PDO são:
- segurança ( declarações preparadas utilizáveis )
- usabilidade (muitas funções auxiliares para automatizar operações de rotina)
- reusabilidade (API unificada para acessar vários bancos de dados, do SQLite ao Oracle)
Sem comentários:
Enviar um comentário