Page 1 sur 1

Securisation page

Posté : 05 avr. 2010, 15:28
par spv54
Bonjour à tous,
je suis novice en php,j'aurais une question:
j'ai un site sur lequel je securise l'acces à une page avec un mot de passe.
Ma page ou se trouve le formulaire est indentification.php dans laquelle se trouve un formulaire avec un bouton valide
qui me dirige vers une page de verification verfi.php.
Dans cette page il y a quelque if qui verifie si le champ mot de passe est vide , invalide.
Si le mot de passe est correct je redirige vers une page qui est QCM.php.
Tout ceci fonctionne bien.
Mon probleme que je rencontre est le suivant: lorsqu'un utilisateur entre directement l'adresse du site avec /qcm.php il y arrive dircetement sans passer par le formulaire d'indentification.
Ceci est normale vous aller me dire est je suis d'accord avec vous.
J'aimerai savoir comment bloquer cette facon de faire est obliger l'utilisateur a passer par cette page identification.php

j'espere avoir ete assez clair dans mes explications.
Merci de vos réponses
Nicolas

Re: Securisation page

Posté : 05 avr. 2010, 15:39
par visualight
Bonjour,

Comment procèdes tu pour le login.
Utilises-tu des sessions, cokkies ou simplement de bêtes vérification "IF" ?

Moi je te conseillerai, dans un premier temps, d'utiliser des sessions.
Comme ça, dans ta page QCM.php, tu implémente un vérification (si la session existe, qu'elle n'est pas vide et éventuellement que la session = quelquechose ... la page est éxécutée, sinon, la page de login s'affiche).

http://www.phpdebutant.org/article69.php

Et puis tu as aussi cet article qui parle de se protéger contre les attaques "man in the middle" :
http://guillaume-affringue.developpez.c ... iffrement/

Sinon, voici le code d'un systeme de login relativement bien écrit (voir bas de la page):
http://guillaume-affringue.developpez.com/

A+
raph

Re: Securisation page

Posté : 05 avr. 2010, 16:00
par SPV54
Merci de cette reponse rapide,
voici comment j'ai procedé, attention je suis novice en php alors y a surement mieu comme syntaxe et façon de faire.
dans ma page indentification.php j'ai :
<?php include('../include/top.php');?>

<p align="center">&nbsp;</p>
<p align="center"><b><i><font face="Comic Sans MS" size="5">Cette page est
sécurisée,</font></i></b></p>
<p align="center"><i><font face="Comic Sans MS" size="5"><b>veuillez entrer le
mot de passe pour afficher le contenu.</b></font></i></p>



<form method="post" action="verif.php">

<p align="center">&nbsp;</p>
<p align="center">&nbsp;</p>
<p align="center"><i><font face="Comic Sans MS" size="4">Mot de passe</font></i> : <input type="password" name="pwd" size="23"> <input type="submit" value="Validez"> </p>

</form>


dans ma page verif.php j'ai :

<?php include('../include/top.php');?>


<?php
$pwd = $_POST['pwd'];

//on verifie que le champ pwd est vide si c'est le cas alors on dit: Mot de passe est vide
if(empty($pwd)){
echo("<center>Le <b>Mot de passe</b> est vide !</center>");
exit();
}
//on verifie si le champ pwd est different du mot de passe si c'est le cas alors on dit: Mot de passe invalide..
if(($pwd)!='tonnoy'){
echo("<center>Le <b>Mot de passe</b> est invalide !</center>");
exit();
}
//on verifie que le mot de passe est bien tonnoysi c'est le cas on affiche la page QCM.php

if ($_POST['pwd']=='tonnoy' )
header('Location: QCM.php')
;?>

Dans ma page QCM.php j'ai:
le contenu a afficher

Re: Securisation page

Posté : 05 avr. 2010, 16:02
par spv54
Comment faudrait-il proceder pour utliser la session dans ma page QCM.php?
merci de vos reponses

Re: Securisation page

Posté : 05 avr. 2010, 16:44
par visualight
Vérif.php
<?php 

// On initialise les sessions
session_start();

// On inclus le fichier TOP.php
include('../include/top.php');

// On vérifie si le formulaire a bien été soumis et si le mot de passe correspond bien à tonnoy
if (isset($_POST['pwd']) AND !empty($_POST['pwd']) AND $_POST['pwd'] == 'tonnoy'){

// On déclara la session PWD avec sécurisation 
$_SESSION['pwd'] = htmlentities($_POST['pwd'], ENT_QUOTES);

// On redirige vers la page QCM.php
header('Location: QCM.php');
exit;

// Sinon, on affiche un message d'erreur
} else {
echo "<center>Le <b>Mot de passe</b> est vide ou erroné !<br />";
echo '<a href="identification.php" target="_self">Réessayer de se connecter</a></center>'
die();
}
?>

QCM.php
<?php
// On initialise la session
session_start();

// On teste si la session est définie, quelle n'est pas vide et qu'elle correpond bien au mot de passe et on exécute la page
if (isset($_SESSION['pwd']) AND !empty($_SESSION['pwd']) AND $_SESSION['pwd'] == 'tonnoy'){

// ... ICI le code de ta page QCM

// Sinon => on n'est pas loggué => on affiche le formulaire de login'
} else {
header('Location: identification.php');
exit;
}
?>

Re: Securisation page

Posté : 05 avr. 2010, 16:48
par AB

Re: Securisation page

Posté : 05 avr. 2010, 21:35
par spv 54
Merci de m'avoir repondu et de m'avoir ecrit le code.
Je vais tester ceci demain
je vous remercie de vos reponses
@+ Nico

Re: Securisation page

Posté : 06 avr. 2010, 21:48
par spv54
Bonsoir à tous

j'ai testé est cela fonctionne impecable, je vous remercie
j'ai juste un petit soucis, lorsque je rentre le mot de passe correct je me redirige vers QCM.php et la j'ai un message d'erreur et je ne vois pas ce que cela veut dire:

Warning: Cannot modify header information - headers already sent by (output started at /mnt/102/sda/3/8/jsptonnoy/newsitejsp/include/top.php:13) in /mnt/102/sda/3/8/jsptonnoy/newsitejsp/QCM/verif.php on line 16

merci de vos reponses
Nicolas

Re: Securisation page

Posté : 07 avr. 2010, 03:36
par devlop78
Cela veut dire que tu as envoyé des données au navigateur des entêtes (headers). Un exemple tout bête est de sauter une ligne avant <?php ou d'utiliser UTF-8 avec BOM.

<?php

header(....);
echo "truc";

== ok

<?php

echo "truc";
header(....);

== pas ok.

Si besoin, l'utilisation de flush est une alternative à ton application.

Re: Securisation page

Posté : 07 avr. 2010, 12:57
par visualight
Bref, top.php renvoie déjà un header.
2 solutions :

1. voir le conseil de devlopnet et investiguer dans ce sens
2. au lieu de rediriger ta page avec un header:location, tu le fais en javascript :
echo '<script type="text/javascript">window.location= "QCM.php"</script>';

EDIT: j'ai corrigé une erreur dans le code que je t'ai fourni.
J'utilisais htmlspecialchar ou lieu de htmlentities pour le mot de passe

Tu peux aussi "t'amuser" à crypter ton mot de passe pour plus de sécurité.
Tu peux utiliser pour ça un hash SHA1.

Exemple :
$password = 38c91de47a760d74ac265b8e3833e5362f34008d // = tonnoy
$mypassword = sha1(htmlentities($_POST['pwd'], ENT_QUOTES));

if ($mypassword == $password) {
// c'est bon, on accède à la page

// sinon => erreur
} else {
echo 'erreur';
}

Pour te faciliter la tâche et générer un mot de passe en SHA1, tu peux utiliser les mots clefs : SHA1 GENERATOR sur google


a+

Re: Securisation page

Posté : 07 avr. 2010, 13:18
par stealth35
pourquoi tu fais un htmlentites dans ton password ?