Actualité informatique
Test comparatif matériel informatique
Jeux vidéo
Astuces informatique
Vidéo
Télécharger
Services en ligne
Forum informatique
01Business

|-  LOGICIELS


|||-  

sécuriser correctement des pages grace a php

 

LOGICIELS : franzip74 PRODUITS : g3n-h@ckm@n et 93 utilisateurs inconnus
Ajouter une réponse
 

 
Page photos
 
     
Vider la liste des messages à citer
 
 Page :
1
Auteur
 Sujet :

sécuriser correctement des pages grace a php

Prévenir les modérateurs en cas d'abus 
beno5
Assidu (de 10 000 à 19 999 messages postés)
  1. Posté le 01/05/2006 à 11:01:53  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
Salut tout le monde  :hello:

 voila, Mamulengo me fait douter :hebe:
 Comment securiser du mieux possible des pages en php pour plusieurs user avec mot de passe stockés en bdd mysql?

 il faudrait utiliser les cookies mais le probleme c'est que on ne peut faire un cookie booléenne donnant simplement l'acces car il suffirait alors d'en creer une nouvelle pour avoir l'acces. De plus on ne peux pas stocker l'utilisateur en cookie et l'utiliser car si on change d'utilisateur en cookie on pourrait prendre la place d'un autre :/  

 j'ai pensé a une page de verification qui incluerait les autres. Elle verifierait si la cookie comportant le nom et celle comportant le mot de passe concorde et dans ce cas la elle definie une constante comportant le nom et une autre booléenne donnant l'accès si true et dans chaque page inclue il y aurrait une condition au tout début n'executant le contenu que si la constante d'acces est sur true.

 mais le probleme est que ca oblige a une requette par page ce qui devient vite lourd :/  

 est ce que si on stocke l'acces par session c'est sur ou il y  a des possibilité de se faire prend les identifiants?

 quelle est la meilleure maniere de proceder pour une sécurité optimale? requette a chaque page? ou session contenant l'user et l'acces a la place de constante créées achaques fois grace a la requette?

 bien sur je verifierai que la derniere connexion de l'utilisateur s'est faite avec la meme ip pour aviter toute tentative de hackage

 de plus il faut mettre le sid dans l'url mais le probleme est que si quelqu'un recupere le sid, il peut donc utiliser la session d'un autre?


 merci  :jap:

  1. homepage
mamulengo
Tu cartonnes ! (de 500 à 999 messages postés)
  1. Posté le 02/05/2006 à 10:00:06  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
Voilà, après étude du cas, la solution adoptée est la suivante :
 J'ai déclaré un utlisateur via mon interface d'administration (.htaccess et .htpassword)

 Une fois connecté, on se retrouve sur cette page :
 



 
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/D​TD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/​xhtml">
 <head>
  <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type"/>
  <title>LogOnWeb.net | Espace Conseiller</title>
 <link rel="stylesheet" type="text/css" media="screen" href="http://www.logonweb.net/​site/style-3.css"/>
 <link rel="stylesheet" type="text/css" media="print" href="http://www.logonweb.net/​site/print.css"/>
 </head>

 <body>
 <div class="noprint"><a href="http://conseiller.logonw​eb.net/" id="lienhaut">
 <!-- NE RIEN INSCRIRE DANS CE BLOC -->
 </a></div>

<div id="contenu">

<div id="contenu2">
 <div class="bloc1">
 <br />
 <font size="3"><b>Identifiez vous</b></font>
 <br />
 <br />
 </div>
 <div align="right"><br />
 <a href="javascript:window.print(​)">
 <img border="0" src="http://site.logonweb.net/​Images/17.ico" width="16" height="16" alt="Imprimer">
 </a>
 </div>
 <div class="bloc2">

 <?php
 mysql_connect("localhost","xxx​xx","xxxxx" ) or die('Connexion a mysql impossible: '.mysql_error());
 mysql_select_db("xxxxx" ) or die('Connexion a la base de données impossible: '.mysql_error());

 // si formulaire rempli
 if (!empty($_POST['nom']) AND !empty($_POST['mdp']))
 {
  // on effectue la requette
  $query = @mysql_query('SELECT * FROM conseillers WHERE nom=\''.$_POST['nom'].'\' ')
  or die ('Erreur mysql: '. mysql_error());

  if (mysql_num_rows($query)==1)
  {

$result=mysql_fetch_array($que​ry);

if (addslashes($result['nom'])==$_POST['nom'] AND $result['mdp']==md5(stripslashes($_POS​T['mdp'])))

{

$phrase="
 <script type=\"text/javascript\">
 window.setTimeout(\"location=(​\'http://conseiller.logonweb.n​et/index.php?url=composition')​;\",1)
 </script>

";

}

else

{

$phrase='Mot de passe ou identifiant incorrect!';

}
  }
  else
  {

$phrase='Erreur dans la base de données';
  }
 }
 else
 {
  if (isset($_POST['submit']))
  {

$phrase = 'Vous devez remplir tous les champs!';
  }
 }
 ?>
 

 <center>
 <form action="./" method="post">
 <table width="300px">
 <tr>
  <td width="150px" align="left">
  Votre nom :
  </td>
  <td width="150px" align="left">
  <input type="text" name="nom" size="20">
  </td>
 </tr>
 <tr>
  <td width="150px" align="left">
  Votre mot de passe :
  </td>
  <td width="150px" align="left">
  <input type="password" name="mdp" size="20">
  </td>
 </tr>
 <tr>
  <td colspan="2" align="center">
  <input type="submit" name="submit" value=">> Connexion <<">
  </td>
 </tr>
 </table>
 </form>
 <p>

 <?php echo $phrase ?>

 <pre>
 <?php print_r($result) ?>
 <hr>
 <?php print_r($_POST) ?>
 </pre>
 




 </center>
 </div>
 <br />
 </div>
 <hr width="100%"/>
 <font size="1">
 © 2004-2006 LogOnWeb.net   |   All rights reserved<br /></font>
 <br />

</div>

</div>
 </body>
 </html>




 Il me semble qu'il y a une erreur dans le code php.

 Parce que quand je tape nom et mot de passe, il me dit Mot de passe ou identifiant incorrect! alors que les deux sont bons puisque contenus dans ma bdd.

 A moins qu'il faille que mon mot de passe contenu dans ma base de donnée soit crypté ???

 Merci de votre aide.


---------------
 
(Publicité)
nadmin
Habitué (de 5 000 à 9 999 messages postés)
  1. Posté le 02/05/2006 à 14:30:43  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 

mamulengo a écrit :

 

 A moins qu'il faille que mon mot de passe contenu dans ma base de donnée soit crypté ???
 




 Vu la ligne "md5(stripslashes($_POST['mdp'])))", oui ton mot de passe doit être crypté au format md5 :jap:

 Pour Beno@, identification par session ça reste le plus sécurisé, je ne crois pas qu'il existe de risque... enfin jamais entendu parler en tout cas ;)

beno5
Assidu (de 10 000 à 19 999 messages postés)
  1. Posté le 02/05/2006 à 18:10:58  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
merci :hello:

 PS: mamulengo...
 j'avais mis ca juste pour avoir le contenu pour le debuggage mais a mon avis ca fera mieux si tu enleve ^^

 <pre>
 <?php print_r($result) ?>
 <hr>
 <?php print_r($_POST) ?>
 </pre>




  1. homepage
mamulengo
Tu cartonnes ! (de 500 à 999 messages postés)
  1. Posté le 02/05/2006 à 18:38:31  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
donc je dois crypter les mots de passe enregistrés dans ma BDD ?


---------------
 
(Publicité)
nadmin
Habitué (de 5 000 à 9 999 messages postés)
  1. Posté le 02/05/2006 à 18:42:00  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
Yep :jap:
 avec la fonction md5

  1. homepage
mamulengo
Tu cartonnes ! (de 500 à 999 messages postés)
  1. Posté le 02/05/2006 à 18:47:20  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
ca veux dire que ma BDD va contenir un truc du style akjdZDCSQ/dj$ù$* ???

 et quand mes visiteurs auront oublié leur mot de passe, je leur renverrai quoi moi ?


---------------
 
nadmin
Habitué (de 5 000 à 9 999 messages postés)
  1. Posté le 02/05/2006 à 18:48:58  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
par exemple oui, mais uniquement le champ "mot de passe" hein ! :p

 il faudra leur envoyer un nouveau mot de passe, parce qu'on ne peut pas décrypté du md5

(Publicité)
beno5
Assidu (de 10 000 à 19 999 messages postés)
  1. Posté le 02/05/2006 à 18:51:22  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
c'ets le plus sur si tu veux mona vis apre ssi tu veux creer un algorythme codage/decodage rien en t'en empeche mais si un hacker tombe sur ces données, il n'aura pas beaucoup de mal a decoder :/  

  1. homepage
mamulengo
Tu cartonnes ! (de 500 à 999 messages postés)
  1. Posté le 02/05/2006 à 19:37:09  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
est il possible de créer 2 champs dans ma base de données :
 - le premier nommé "mdp" contenant le mot de passe;
 - et le second nommé "mdp5dm" contenant le mot de passe crypté ???

 est ce que cette solution peut poser des problèmes de sécurité ?

 si c'est possible et pas trop risqué, j'aimerais savoir si dans mon phpmyadmin je peux faire un champ dont la valeur viendrais d'un autre champ ?
 par exemple : md5(mdp) == value="mdp5dm"

 



Petite question en passant : Pouvez vous me faire un topo sur crypt() et md5() ?
 





---------------
 
beno5
Assidu (de 10 000 à 19 999 messages postés)
  1. Posté le 02/05/2006 à 19:42:09  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
bah dans ce cas totalment con de mettre un champ avec le mot de passe en clair et un champ avec le mot de passe haché :/  

 pour le champ qui tient d'un autre bah c'ets a l'inscription que tu dois faire ca

 et pour le topo: doc officielle ;)

(Publicité)
  1. homepage
mamulengo
Tu cartonnes ! (de 500 à 999 messages postés)
  1. Posté le 03/05/2006 à 12:30:34  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
Voilà, avec Beno@ on as essayé de faire quelquechose qui fonctionne.

 Voilà le script de ma page d'identification:
 



 
 <?php
 mysql_connect("localhost","xxx​xxx","xxxxxxxxx" ) or die('Connexion a mysql impossible: '.mysql_error());
 mysql_select_db("xxxxxxxx" ) or die('Connexion a la base de données impossible: '.mysql_error());

 // si formulaire rempli
 if (!empty($_POST['nom']) AND !empty($_POST['mdpmd5']))
 {
  // on effectue la requette
  $query = @mysql_query('SELECT * FROM conseillers WHERE nom=\''.$_POST['nom'].'\' ')
  or die ('Erreur mysql: '. mysql_error());

  if (mysql_num_rows($query)==1)
  {

$result=mysql_fetch_array($que​ry);

if (addslashes($result['nom'])==$_POST['nom'] AND $result['mdpmd5']==md5(stripslashes($_​POST['mdpmd5'])))

{

include '?url=composition'; // j'ai essayé d'inclure une autre page ici
 // mais je pense que c'est ici que l'on doit définir la variable de session, non ?


}

else

{

$phrase='Mot de passe ou identifiant incorrect!';

}
  }
  else
  {

$phrase='Erreur dans la base de données';
  }
 }
 else
 {
  if (isset($_POST['submit']))
  {

$phrase = 'Vous devez remplir tous les champs!';
  }
 }
 ?>

 
<div class="bloc1">
 <br />
 <font size="3"><b>Identifiez vous</b></font>
 <br />
 <br />
 </div>

 <?php include("imprimer.htm" ); ?>
 </div>
 <div class="bloc2">

 <center>
 <form action="?url=composition" method="post">
 <table width="300px">
 <tr>
  <td width="150px" align="left">
  Votre nom :
  </td>
  <td width="150px" align="left">
  <input type="text" name="nom" size="20">
  </td>
 </tr>
 <tr>
  <td width="150px" align="left">
  Votre mot de passe :
  </td>
  <td width="150px" align="left">
  <input type="password" name="mdpmd5" size="20">
  </td>
 </tr>
 <tr>
  <td colspan="2" align="center">
  <input type="submit" name="submit" value=">> Connexion <<">
  </td>
 </tr>
 </table>
 </form>
 </center>
 </div>
 <br />
 </div>
 




 Ensuite, je pense qu'il va me falloir créer une condition (dans toutes mes pages) qui devra égaler la variable de session pour que la page s'affiche, non ?

 Comment je peux faire ça ?


---------------
 
beno5
Assidu (de 10 000 à 19 999 messages postés)
  1. Posté le 03/05/2006 à 13:01:39  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
bah tu créé une session $_SESSION['auth']=true; et dans chaque page:

 debut de page:
 <?php if ($_SESSION['auth']) : ?>

 fin de page:
 <?php endif ?>

  1. homepage
mamulengo
Tu cartonnes ! (de 500 à 999 messages postés)
  1. Posté le 03/05/2006 à 17:26:47  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
bon, j'ai fait tout ce qu'on a dis et ca ne marche toujours pas :(


---------------
 
(Publicité)
beno5
Assidu (de 10 000 à 19 999 messages postés)
  1. Posté le 03/05/2006 à 18:23:23  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
:/  
 qu'est ce qui ne marche pas?

 Page :
1

Aller à :
 

Sujets relatifs
Sécuriser une page WEB par mot de passe Sécuriser un serveur
Vitesse d'ouverture des pages et équipement des internautes Securiser Easypph
frontpage ne fonctionne pas correctement Qui connais un loigiciel gratuit pour sécuriser un clé USB ?
Plus de sujets relatifs à : sécuriser correctement des pages grace a php

Les 5 sujets de discussion précédents Nombre de réponses Dernier message
nom d'occurence de champs de texte dans flash 0
A propos du générateur d'applications DYNAMIC 1
[Création de site] Problème HTML 5
Sécuriser une page WEB par mot de passe 3
developper Blogger? 1