Sécurité web

La sécurité de votre site Internet, de votre serveur web et de la base de données depend surtout de bonnes pratiques.

Liste des bonnes pratiques pour sécuriser un site.

Tester les champs de vos formulaires avant validation.

Il faut être sûr que vos champs obligatoires soient renseignés et les champs emails ont le bon format avant validation.
Indiquez les bons types de vos champs input (email, password, number...).

Hachage des mots de passes

Encoder les mots de passe utilisateur avant de les stocker dans la base de données.
Pour réaliser le Hachage du mot de passe vous devez utiliser la fonction PHP password_hash ().


            <?php
$passWord = password_hash("monMotDePasse", PASSWORD_DEFAULT);
?>

Pour comparer un mot de passe encodé avec la fonction password_hash() vous devez utiliser la fonction PHP password_verify().
Il vous faudra donc récupérer depuis la base de données les infos d'un utilisateur avec son login.
Si un résultat existe alors il faudra comparer le mot de passe saisi depuis le formulaire de connexion avec le mot de passe récupéré de la base de données.


<?php

// recupération du mot de passe utilisateur encodé avec la fonction password_hash(). $hash = $userPAssword; $passLogin = $_POST['passWord'] //Récupération du mot passe du formulaire de login. if (password_verify($passLogin, $hash)) {     echo 'Le mot de passe est valide !'; } else {     echo 'Le mot de passe est invalide.'; }
?>

Filtrer les valeurs récupérées depuis les superGlobales $_POST et $_GET.

  
    
    <?php
    <input type='text' name='titreArticle' value='mon titre pour mon article'/>
//Fonction de filtre du $_POST pour encoder le caractères spéciaux et échapper le texte. $titreArticle = filter_input(INPUT_POST, 'titreArticle',  FILTER_SANITIZE_FULL_SPECIAL_CHARS,FILTER_SANITIZE_ADD_SLASHES);
//Ajout des filtres pour supprimer des balises et échapper les caractères $page = filter_input(INPUT_GET, 'page',FILTER_SANITIZE_ADD_SLASHES, FILTER_SANITIZE_STRING);
//Remplace la méthode suivante $titreArticle = $_POST['titreArticle']; ?>