PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 13-03-2015 23:37:18

bapro
Membre
Inscription : 13-03-2015
Messages : 1

Empecher user acceder aux pages par url

Salut a tous,
Cela me fait un grand plaisir de m'inscrire sur ce forum, et je profite l'occasion pour feliciter ce travail gigantesque que vous faites dans le monde de l'informatique.
En naviguant sur le net j'ai pu trouver des codes de la page article95.php sur ce site en fonction de mon objectif qui est d'empecher aux users d'acceder aux pages membres par url et en essayant ils doivent automatiqument se diriger vers la page d'identification. Malgre j'ai utilise ces codes comme ils sont, tout fonctionne bien, mais un user peut toujours atteindre la page proteger par les codes appropries a partir de l'url.
Je poste mes codes
1- page d'identification
<code>
<form action="traitement.php" method='post'>
<table align="center" border="0">
  <tr>
    <td>Login :</td>
    <td><input type="text" name="login" maxlength="250"></td>
  </tr>
  <tr>
    <td>Password</td>
    <td><input type="password"name="pass" maxlength="10"></td>
  </tr>
  <tr>
    <td colspan="2" align="center"><input type="submit" value="log in"></td>
  </tr>
</table>
</form></code>
2- page de traitement
<code><?php
$db = ($GLOBALS["___mysqli_ston"] = mysqli_connect('',  '',  '')); 

// on sélectionne la base 
((bool)mysqli_query($db, "USE qbreplace")); 
session_start();
if(isset($_POST) && !empty($_POST['login']) && !empty($_POST['pass'])) {
  extract($_POST);
  // on recupère le password de la table qui correspond au login du visiteur
  $sql = "select pwd from tbl_user where login='".$login."'";
  $req = mysqli_query($GLOBALS["___mysqli_ston"], $sql) or die('Erreur SQL !<br>'.$sql.'<br>'.((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)));

  $data = mysqli_fetch_assoc($req);

  if($data['pwd'] != $pass) {
    echo '<p>Mauvais login / password. Merci de recommencer</p>';
    include('index.php'); // On inclut le formulaire d'identification
    exit;
  }
  else {
   
    $_SESSION['login'] = $login;
     
   header('location:timesheet.php');
    // ici vous pouvez afficher un lien pour renvoyer
    // vers la page d'accueil de votre espace membres 
  }     
}
else {
  echo '<p>Vous avez oublié de remplir un champ.</p>';
   include('index.php'); // On inclut le formulaire d'identification
   exit;
}


?></code>
3- timesheet.php qui est la page membre securiser qui devrait etre  accede qu'apres le login non par url
<code><?
session_start();


if(!isset($_SESSION['login'])) {
  echo 'Vous n\'êtes pas autoris´ à acceder à cette zone';
  include('index.php');
  exit;
}
?>
la partie html en bas
</code>
Le probleme est que je peux toujours acceder a la page timesheet.php via l'url je ne suis pas redirige vers la page d'identification

Esperant bientot votre reponse je vous remercie d'avance
Bapro

Hors ligne

#2 05-06-2015 11:09:09

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : Empecher user acceder aux pages par url

Bonjour,

Voici quelques conseils que je vous conseille instamment de suivre :
1) Passez à PDO au lieu d'utiliser mysqli
2) N'utilisez plus $GLOBALS dans votre code.
3) Vous devez hasher les mots de passe dans votre base de données au minimum en SHA2 (MD5 et SHA1 sont obsolètes: MD5 depuis suffisamment longtemps pour plus se rappeler depuis quand, et SHA1 depuis Janvier 2015)
4) Une fois le 3) effectué vous devez comparer le mot de passe saisi par l'utilisateur avec celui hashé en base de données en le hashant au niveau de la requête.
5) Passez par des variables intermédiaires au lieu de $_POST directement dans vos requêtes. Ces variables intermédiaires devront être contrôlées au niveau de leur contenu avant d'être utilisées dans la requête afin d'éviter ce que l'on appelle des injections SQL.

Bonne journée.

4)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

Pied de page des forums