GithubHelp home page GithubHelp logo

php-challenge-auth's Introduction

Challenge PHP

Nous avons vu du CRUD avec l'activité randonnée.

Certains actions du CRUD ne doivent pas être accessibles par n'importe qui : comme la mise à jour, la création et la suppression.

Dans ce challenge, nous allons mettre en place une protection sur nos pages create.php, update.php, delete.php de l'activité randonnée, pour laisser l'utilisation de ces fonctionnalités uniquement à des personnes enregistrées en base de données (les utilisateurs de confiance).

Comment ça marche

Avant tout, sachez que pour pouvoir faire cela, il faudra savoir utiliser les sessions en PHP. Ce petit tutoriel vous explique comment fonctionne les sessions et aussi le principe d'une page connexion et de déconnexion.

Insérer des utilisateurs

Pour s'identifier, il faut déjà avoir des utilisateurs en base de données.

Avec phpmyadmin, ajoutez des utilisateurs en base de données.

Protections des pages

Au début de chaque page create.php, update.php, delete.php vérifiez que l'utilisateur soit connecté.

Pour faire cela c'est très simple. En se connectant vous avez dû enregistrer les informations de l'utilisateur dans une variable de session. Il suffit maintenant d'aller vérifier que la variable de session existe pour savoir si l'utilisateur est valide !

TIPS : Créer une fonction pour pouvoir la réutiliser au début de chaque pages concernées

C'est un peu léger comme protection mais c'est pour que vous compreniez le principe.

ALLER PLUS LOIN

Si vous regardez en base de données vous verrez que les mots de passes sont stockés en "claires" on peut les lire. Pas top pour la sécurité. Il va falloir crypter le mot passe ! Sachez qu'il y a des fonctions faites pour ça. On va utiliser la fonction sha1()

Il faudra crypter le mot de passe dans la base de données. Dans phpmyadmin, lorsque vous entrez/éditer une ligne, vous pouvez voir la colonne FONCTION. Dans cette colonne vous choisissez SHA1. Après avoir effectué cela, vous pouvez voir que le mot de passe est une succession de chiffres et de lettres.

Vous allez me dire qu'il y a un problème. Car lors de la connexion de l'utilisateur on compare le mot de passe avec ce qu'il y a dans le champ password de notre base de données et c'est clairement plus la même chose.

Vous avez raison. C'est pourquoi, lors de la connexion, on utilise la fonction sha1() avec comme paramètre le mot de passe entrée par l'internaute. À cette fonction, si on lui passe le même paramètre, elle retourne le même résultat.

Pour résumer, dans le fichier qui vérifie les identifiants et les mots de passes, au moment de comparer les mots de passes il suffit d'utiliser la fonction sha1()

Par exemple :

//request to find the user in database
$req = $bdd->prepare('SELECT nom FROM user WHERE username = ? AND password <= ?');
//$username and $password are variable you got from the login form
$req->execute(array($username, sha1($password)));

php-challenge-auth's People

Contributors

publicvar avatar jguiraud avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.