Se connecter

Informatique

Création de sites web

Sujet : SECURISER un cookie md5?
1
KimJongUnDeter
Niveau 4
23 juin 2017 à 17:49:05

salut,
J'ai un projet à rendre demain et je dois créer un système de connexion avec cookies (username et password), et securiser le cookie password.
Tout fonctionne mais je n'arrive pas à sécuriser mon cookie password .

Mon code :

<?php

//username et mdp d'administrateur
$login="";
$motpass="";
//Récupération des valeurs
$username=$_POST['username'];
$psw=$_POST['psw'];
//Vérification
if($username==$login AND $psw==$motpass)
{
$expir=time() + 200;

//Ecriture des cookies
setcookie("username",$username,$expir);
setcookie("password",$psw,$expir);
//Redirection vers la page à accès réservé
$contenu = include("action2.php");

}
else

//Redirection vers la page de saisie du code
echo "<script type=\"text/javascript\"> window.location='authentificationerreur.php' ;</script>";

?>

MERCI :coeur:

deepblue
Niveau 13
23 juin 2017 à 22:25:39

Oula!

Pour répondre à la question "comment sécuriser un cookie ?", on commence déjà par ne pas mettre n'importe quoi dedans. En l’occurrence, il ne faut jamais y placer un couple login/mdp !
Je t'invite à utiliser les sessions qui permettent, façon un poil sécurisée, de stocker ce genre de données : http://php.net/manual/fr/function.session-start.php#refsect1-function.session-start-examples

WebScraper
Niveau 10
23 juin 2017 à 23:32:49

C'est pour éviter ce genre de code qu'on a inventé les frameworks [[sticker:p/1lm9]]

Le_Tryall
Niveau 8
23 juin 2017 à 23:58:24

Si t'es profs t'ont enseignés à stocker un MDP dans un cookie, change d'école [[sticker:p/1kki]]

KimJongUnDeter
Niveau 4
24 juin 2017 à 01:43:13

Le 23 juin 2017 à 23:58:24 Le_Tryall a écrit :
Si t'es profs t'ont enseignés à stocker un MDP dans un cookie, change d'école [[sticker:p/1kki]]

je suis en dut réseaux telecoms les profs sont pas oufs, sinon merci pour vos réponses

Pseudo supprimé
Niveau 7
24 juin 2017 à 01:57:11

<?php

//initialisation des donnée
$ip = $_SERVER['REMOTE_ADDR'];
$userStatus = false;

// Récupération des donné sauvegardé en base de donnée
$key = md5(rand());
$pass = md5($key . 'password');
$lastIp = md5($key . $ip;
$user = 'user';

// Le formulaire est validé par l'utilisateur
if(isset($_POST['send']) && $_POST['send'] && $_POST['password'] != " && $_POST['user'] != '') {
// NE JAMAIS SAUVEGARDER UN PASSWORD EN CLAIR !!!
$formPass = md5($key . $_POST['password']);
$formUser = $_POST['user'];

// Valid password
if($formPass == $pass) {
$vPass = true;
} else {
$vPass = false;
}

// Valid user
if($formUser == $user) {
$vUser = true;
} else {
$vUser = false;
}

// Si tout est OK
if($vPass && $vUser) {
if(isset($_POST['rememberMe']) && $_POST['remeberMe']) {
$cookieTime = time() + 3600 * 24 * 7; // Une semaine
$cookieValue = md5($key . $formPass);
$cookieDomain = 'domaine du site';
$cookieSecure = true;

setcookie('keyAuth', $cookieValue, $cookieTime, $cookieDomain, $cookueSecure);
}
}
}

// Si déja connecté
// Ont vérifie si l'IP n'a pas changé au cas où !
if(isset($_COOKIE['keyAuth']) && $_COOKIE['keyAuth'] == md5($key . $formPass) && md5($key . $ip) == $lastIp) {
// Tout est OK
$userStatus == true;
} else {
// Destruction du cookie
setcookie('keyAuth', time() - 1);
}

if($userStatus) {
// Utilisateur connecté
// Redirection, validation, role, modification des menus, etc...
} else {
// Utilisateur non connecté
// Affichage du formulaire de connexion.
}

WebScraper
Niveau 10
24 juin 2017 à 02:54:51

à voir si tu ne peux pas remplacer ça :
if($formPass == $pass) {
$vPass = true;
} else {
$vPass = false;
}

par ça directement $vPass = $formPass == $pass;
J'ai pas fait de php depuis longtemps mais je pense que ça doit fonctionner. Sinon utiliser un ternaire.

Sinon le code n'est pas du tout structuré en couches et est peu maintenable.
Même si on utilise pas de framework ni l'OO, il est tout de même recommandé de diviser le code en fonctions !

WebScraper
Niveau 10
24 juin 2017 à 03:19:12

var bool $vPass
var string $formPass
var string $pass

l'expression $formPass == $pass est un booléen, que tu peux stocker directement dans $vPass.
En fait tu peux écrire
$vPass = $formPass == $pass ? true : false;

Ce qui revient à $vPass = $formPass == $pass.

Video_Pijama
Niveau 9
24 juin 2017 à 11:38:52

Le 24 juin 2017 à 02:54:51 WebScraper a écrit :
Sinon le code n'est pas du tout structuré en couches et est peu maintenable.
Même si on utilise pas de framework ni l'OO, il est tout de même recommandé de diviser le code en fonctions !

+1

Trop de "if", des variables dont le nom n'a aucun sens, des répétitions, ça sent mauvais (code smell)

Quand on met trop de commentaires pour expliquer un bout de code, c'est le moment d'extraire cette logique dans une methode ou une fonction, dont le nom, ainsi que les arguments, feront déja office de documentation.

Pseudo supprimé
Niveau 7
24 juin 2017 à 14:03:52

Ok, j'ai simplement voulue expliqué à un étudient les bases de la sécurisation d'un cookies. Le reste du code est simplifier à l’extrême et sûr-commenté pour qu'un étudient qui place sont password en clair dans un cookies puisse comprendre...

Personne n'utiliserai mon code (fait en 5 minutes pour m'amuser et tenter d'expliquer) en prod, il faudrait être un idiot pour le faire !

Maintenant que vous avez pointez du doit l’évidence proposez au moins un script fonctionnel...

1
Sujet : SECURISER un cookie md5?
   Retour haut de page
Consulter la version web de cette page