Bonjour, je code un CMS perso, ca m'évite d'utiliser une usine a gaz et c'est bon pour l'apprentissage , tout est au poil et là je viens de finir la partie relative à la sécurité j'aimerai avoir votre avis.
J'ai lu tout un tas de tutos sur le sujet et ai essayé de synthétiser le tout pour faire quelque chose de pas trop dégueulasse, mais n'étant qu'un débutant je ne peux etre sur de la fiabilité de tout ca......
Comme du code sera plus simple à lire qu'une explication de ma part voici toutes les fonctions utilisées:
voilà la partie de code utilisée lors d'un login réussi:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 /* shaPassword * chiffre le mot de passe utilisateur ou toute autre donnée */ function shaPassword($pass){ $context = hash_init('sha256'); hash_update($context, $pass); return hash_final($context); } /* sessionLogin * initialise les variables de session lors du login réussi d'un utilisateur */ function sessionLogin($login, $time){ session_regenerate_id(TRUE); $_SESSION['user'] = dbSafe($login); $_SESSION['time'] = time(); $_SESSION['id'] = (string)randNumber(); $_SESSION['nav'] = shaPassword($_SERVER['HTTP_USER_AGENT']); $_SESSION['ip'] = $_SERVER['REMOTE_ADDR']; return 0; } /* sessionEnd * termine la session */ function sessionEnd(){ session_start(); session_unset(); session_destroy(); return 0; } function addCookie($name, $value){ setCookie($name, $value, $_SESSION['time']+3600, '/admin/'); return 0; } function delCookie(){ setcookie('auth', ''); setcookie('nav', ''); return 0; }
et enfin le code situé dans l'entête de chaque page de la zone membre:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 if($dbPass[0][0] == $passEncrypted){ // si tout va bien (login et mot de passe OK on redirige vers // l'espace utilisateur. sessionLogin($name); addCookie('auth', $_SESSION['id']); addCookie('nav', shaPassword($_SERVER['HTTP_USER_AGENT'])); redirect('dashboard'); }
la fonction redirect() redirige l'utilisateur frauduleux vers un autre site, et le bon utilisateur vers le tableau de bord.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 if(!isset($_SESSION)) session_start(); $exploded = explode('/', $_SERVER['REQUEST_URI']); $requestedPage = $exploded[count($exploded) - 1]; include_once($_SERVER["DOCUMENT_ROOT"] . '/config.php'); if(!empty($_COOKIE['auth']) && !empty($_COOKIE['nav'])){ if($_COOKIE['auth'] != $_SESSION['id'] || $_COOKIE['nav'] != $_SESSION['nav']){ addCookie('auth', ''); addCookie('nav', ''); sessionEnd(); redirect('piege'); } elseif($requestedPage == 'login.php'){ redirect('dashboard'); } } elseif(empty($_COOKIE['auth']) && empty($_COOKIE['nav']) && $requestedPage != 'login.php'){ sessionEnd(); redirect('piege'); } elseif(($_SESSION['ip'] != $_SERVER['REMOTE_ADDR']) && $requestedPage != 'login.php'){ sessionEnd(); redirect('piege'); }
Je pense également ajouter un peu de sel a ces 2 variables $_SESSION['id'] et $_SESSION['nav'] ca ne peux pas faire de mal a condition que la gestion de tout cela soit correcte.
Merci pour vos avis et conseils.
Partager