Avoir les logiciels présentés sur Devweb 103 : Le back-end et PHP, les bases en HTML & PHP présentées sur Devweb 101 : Les bases du développement web & Devweb 103 : Le back-end et PHP.
Sur tous les systèmes linux, les fichiers disposent de plusieurs propriétés pour définir qui a le droit d'en faire quoi :
Un très bon résumé des droits sur les systèmes linux : http://www.tuteurs.ens.fr/unix/droits.html
Ce type de protection fonctionne pour protéger tout un dossier avec un nom d'utilisateur et un mot de passe.
Il faut créer deux fichiers dans le dossier :
AuthName "Secret !" AuthType Basic AuthUserFile "/users/promo2019/rgrondin/html/protec/.htpasswd" Require valid-user
nomdutilisateur1:motdepassecrypté1 nomdutilisateur2:motdepassecrypté2
Un script simple pour les crypter :
<?php echo crypt('motdepasse'); ?>
Et même pour en faire plusieurs à la suite :
<?php if(isset($_POST['passe'])){ echo crypt($_POST['passe']); } ?> <form method="post"> <input type="password" name="passe" /> <input type="submit" /> </form>
Encore plus simple, il suffit de rajouter ça dans un fichier .htaccess à la racine du dossier à protéger :
AuthType cas Require valid-user
Dans vos fichiers php, vous avez accès à l'utilisateur connecté via $_SERVER['REMOTE_USER'] donc un simple script de protection peut être :
Plusieurs méthodes possible :
Il existe plusieurs approche pour le faire mais le plus simple doit être avec une page de connexion, et des sessions pour enregistrer un utilisateur connecté.
On va utiliser une variable de session $_SESSION['connecte'] qui va contenir le mot de passe crypté entré par l'utilisateur. On va crypter en utilisant la fonction sha1 de PHP.
<?php session_start(); $mdp_crypte = '5ed25af7b1ed23fb00122e13d7f74c4d8262acd8'; // Hash de coucou if(isset($_POST['password'])){ $_SESSION['connecte'] = $_POST['password']; } if(isset($_SESSION['connecte']) && $_SESSION['connecte'] == $mdp_crypte){ header('location: secret.php'); exit; } if(isset($_POST['password'])) echo 'Mot de passe incorrect !'; ?> <form method="post"> Mot de passe : <input type="password" name="password" /> <br /> <input type="submit" /> </form>
<?php session_start(); $mdp_crypte = '5ed25af7b1ed23fb00122e13d7f74c4d8262acd8'; // Hash de coucou if(!isset($_SESSION['connecte']) || $_SESSION['connecte'] != $mdp_crypte){ header('location: connexion.php'); exit; } ?> Contenu secret...