[PHP] Comment protéger des pages web ?

Comment protéger des pages web ? [PHP] - PHP - Programmation

Marsh Posté le 25-04-2004 à 15:53:33    

voici ce que je compte inclure a chaque début de mes pages , cela apporte-t-il une securité suffisante ?
 

Code :
  1. if ( !isset($_SERVER['PHP_AUTH_USER']) ) {
  2.    header('WWW-Authenticate: Basic realm="My Realm"');
  3.    header('HTTP/1.0 401 Unauthorized');
  4.  
  5.    exit();
  6. }
  7. else {
  8.    include("connect.inc.php" );
  9.    $query='SELECT pass from users WHERE pseudo='.$_SERVER['PHP_AUTH_USER'] ;
  10.    $ker=mysql_query($query);
  11.    $k=mysql_fetch_array($ker);
  12.  
  13.       if( $k[0] != $_SERVER['PHP_AUTH_PW'] ){
  14.       header("Location: index.php" );
  15.       exit();
  16.       }
  17. }
  18. print 'on affiche le reste de la page';
  19. ?>


 
 
merci pour votre aide
 
(sujet édité)


Message édité par BaDaBoOm le 25-04-2004 à 20:54:27
Reply

Marsh Posté le 25-04-2004 à 15:53:33   

Reply

Marsh Posté le 25-04-2004 à 17:21:10    

personne ?

Reply

Marsh Posté le 25-04-2004 à 18:28:40    

non, car tous est tjrs piratable, lol
 
franchement j'en c rien

Reply

Marsh Posté le 25-04-2004 à 18:38:35    

lol pas bcp de réponses !
peut etre que mon sujet n'est pas très bien formulé.
attendons ...

Reply

Marsh Posté le 25-04-2004 à 22:32:07    

bon ca marche a peu pres mais comment renvoyer a un form de login quand le mdp entré est mauvais ??

Reply

Marsh Posté le 25-04-2004 à 22:49:31    

une page web n'est pas protégeable a 100 % il a toujours moyen de la recuperer ......

Reply

Marsh Posté le 25-04-2004 à 23:35:30    

bon je n'arive tjrs pas a faire marcher ce système correctement, lq j'entre un mauvais mdp je suis redirigé vers une page erreur.php qui doit effacer les variables $_SERVER['PHP_AUTH_USER'] et $_SERVER['PHP_AUTH_PW'] comme ceci unset($_SERVER['PHP_AUTH_USER'],$_SERVER['PHP_AUTH_PW']) mais lorsque je retourne vers la page securisé au lieu de me redemander l'identification il me renvoi direct sur erreur .php, comme si les 2 var n'avaient pas été effacées.
 
voici le code legerement modifié :

Code :
  1. include("config.php" );
  2. if(isset($conf_security) and $conf_security=="on" ){
  3. if ( !isset($_SERVER['PHP_AUTH_USER']) ) {
  4.    header('WWW-Authenticate: Basic realm="My Realm"');
  5.    header('HTTP/1.0 401 Unauthorized');
  6.  
  7.    exit();
  8. }
  9. else {
  10.    include("connect.inc.php" );
  11.    $query='SELECT pass from users WHERE             pseudo='.$_SERVER['PHP_AUTH_USER'] ;
  12.    $ker=mysql_query($query);
  13.    $k=mysql_fetch_array($ker);
  14.    $pw=$_SERVER['PHP_AUTH_PW'];
  15.  
  16.       if( $k[0] != $pw ){
  17.   header("Location: erreur.php" );
  18.  
  19.   exit();
  20.       }
  21. }
  22. }


 
la page erreur :

Code :
  1. unset($_SERVER['PHP_AUTH_USER'],$_SERVER['PHP_AUTH_PW']);


Message édité par BaDaBoOm le 25-04-2004 à 23:39:02
Reply

Marsh Posté le 26-04-2004 à 00:09:22    

Ah ca marche enfin !!
 
après quelques bidouilles le code fait enfin tout ce que je veux, je met la solution pour ceux que ca interesse :
 
à inclure en tete de chaque page a protéger :

Code :
  1. <?php
  2. include("config.php" );
  3. if(isset($conf_security) and $conf_security=="on" ){
  4. if(isset($_SERVER['PHP_AUTH_USER'])){
  5. include("connect.inc.php" );
  6. $query='SELECT pass from users WHERE pseudo='.$_SERVER['PHP_AUTH_USER'] ;
  7.    $ker=mysql_query($query);
  8.    $k=mysql_fetch_array($ker);
  9. mysql_close();
  10. }
  11. if ( ( !isset( $_SERVER['PHP_AUTH_USER'] )) || (!isset($_SERVER['PHP_AUTH_PW'])) || ( $_SERVER['PHP_AUTH_PW'] != $k[0] ) ) {
  12.    header('WWW-Authenticate: Basic realm="My Realm"');
  13.    header('HTTP/1.0 401 Unauthorized');
  14.  
  15.    print 'erreur de connexion';
  16.  
  17.    exit();
  18. }
  19. }
  20. ?>


 
petit inconvénient: ca fait une connection mysql a chaque page ce qui est peut etre un peu lourd.Pensez-vous qu'utiliser une variable de session serait mieux ou pas ?


Message édité par BaDaBoOm le 26-04-2004 à 00:18:26
Reply

Marsh Posté le 27-04-2004 à 16:34:22    

petite mise a jour pour ceux qui voudraient s'inspirer de cette méthode, j'ai rajouté quelques verifications . Dans l'ancienne version il sufisait de laisser la case mdp vide et de valider pour accéder au document c'est maintenant résolu :

Code :
  1. <?php
  2. include("config.php" );
  3. if(isset($conf_security) and $conf_security=="on" ){
  4. if(isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW']) && $_SERVER['PHP_AUTH_USER']!=0 && $_SERVER['PHP_AUTH_PW']!=0){
  5. include("connect.inc.php" );
  6. $query='SELECT pass from users WHERE pseudo='.$_SERVER['PHP_AUTH_USER'] ;
  7. $ker=mysql_query($query);
  8. $k=mysql_fetch_array($ker);
  9. mysql_close();
  10. }
  11. if ( ( !isset( $_SERVER['PHP_AUTH_USER'] )) || (!isset($_SERVER['PHP_AUTH_PW']))
  12.         || ( $_SERVER['PHP_AUTH_PW'] != $k[0] ) || $_SERVER['PHP_AUTH_USER']==0 || $_SERVER['PHP_AUTH_PW']==0 ) {
  13.    header('WWW-Authenticate: Basic realm="My Realm"');
  14.    header('HTTP/1.0 401 Unauthorized');
  15.  
  16.    print 'erreur de connexion';
  17.  
  18.    exit();
  19. }
  20. }
  21. ?>

Reply

Marsh Posté le 28-04-2004 à 08:27:41    

:jap:  pour avoir posté less résultats de tes tests, ça peut toujours servir !
 
 :hello:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed