PHP|Débutant :: Forums

Advertisement

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

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

#1 Re : Forum Général PHP » Sécurisation de la connexion » 02-05-2010 11:11:11

Re bonjour,

J'ai essayé de cette façon et CA FONCTIONNE

J'ai crée un autre fichier en php

#
//set local variables
#
$dbtype = "MySQL"; //choose db type you want to connect to use MySQL, MySQLi or PostGreSQL as examples
#
$dbhost = "localhost";
#
$dbuser = "chatomon_login";
#
$dbpass = "motdepasse";
#
$dbname = "chatomon_base";

Dans l'autre fichier, j'ai mis

<?php

include '../Includes/configs/conect.php';

// on se connecte à MySQL
$db = mysql_connect($dbhost,$dbuser,$dbpass);

// on sélectionne la base
mysql_select_db($dbname,$db);

// on crée la requête SQL
$sql = 'SELECT make,model,vehicle_type,mileage,year,trans,price,features FROM listings ORDER BY make';

// on envoie la requête
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

// on fait une boucle qui va faire un tour pour chaque enregistrement
while($data = mysql_fetch_assoc($req))
    {
    // on affiche les informations de l'enregistrement en cours
   ?>
   <tr>
  <td><?php echo ''.$data['make'].' </br>'; ?></td>
    <td><?php echo ''.$data['model'].' </br>'; ?></td>
    <td><?php echo ''.$data['vehicle_type'].' </br>'; ?></td>
    <td><?php echo ''.$data['year'].' </br>'; ?></td>
    <td><?php echo ''.$data['mileage'].' </br>'; ?></td>
    <td><?php echo ''.$data['trans'].' </br>'; ?></td>
    <td><?php echo ''.$data['price'].' </br>'; ?></td>
    <td><?php echo ''.$data['features'].' </br>'; ?></td>
 
 
<?php
    }
// on ferme la connexion à mysql
mysql_close();
?>

C'est nickel. 

J'espère que point de vue sécurité, ça tient le choc.  J'ai également testé en indiquant l'adresse du fichier config dans mon navigateur et j'ai une erreur 404

Merci pour vos avis et réponses wink

#2 Re : Forum Général PHP » Sécurisation de la connexion » 02-05-2010 11:11:11

Bonjour,

Voilà le code du fichier config.

//set local variables
$dbtype = "MySQL"; //choose db type you want to connect to use MySQL, MySQLi or PostGreSQL as examples
$dbhost = "localhost";
$dbuser = "chatomon_login";
$dbpass = "motdepasse";
$dbname = "chatomon_base";

//connection error messages used for database user and password or type failures
DEFINE("DATABASE_CONNECTION_ERROR","<h1>Fatal Error:</h1><p>Unable to connect to the database at this time.</p>");
DEFINE("DATABASE_LOCATION_ERROR","<h1>Fatal Error:</h1><p>Unable to locate the database at this time.</p>");
DEFINE("DATABASE_EMPTY_ERROR","<h1>Fatal Error:</h1><p>Unable to locate data it appears your database is empty.</p>");
DEFINE("DATABASE_UNSUPPORTED_DATABASE_TYPE_ERROR","<h1>Fatal Error:</h1><p>Your server does not support access to a $dbtype Database.</p>");
//debug message used when debugging is turn on or off
DEFINE("DEBUG_SQL_TURN_OFF_VERBOSE_MESSAGE","<h1>Fatal Error:</h1><p>There was an error somewhere in your script.</p>");

//choose the right connector to setup
switch($dbtype) {
  //connect to MySQL
  case 'MySQL':
    if (function_exists('mysql_connect')) {
      include_once "db.functions.$dbtype.php";
    }  else {
      die(DATABASE_UNSUPPORTED_DATABASE_TYPE_ERROR);
      exit();
    }
    break;
  //connect to MySQLi
  case 'MySQLi':
    if (function_exists('mysqli_connect')) {
      include_once "db.functions.$dbtype.php";
    }  else {
      die(DATABASE_UNSUPPORTED_DATABASE_TYPE_ERROR);
      exit();
    }
    break;
  //connect to PostGreSQL remapper functions are broken
  case 'PostGreSQL':
    //add some code for postgresql later
    if (function_exists('pg_pconnect')) {
      include_once "db.functions.$dbtype.php";
    }  else {
      die(DATABASE_UNSUPPORTED_DATABASE_TYPE_ERROR);
      exit();
    }
    break;
  default:
    die(DATABASE_LOCATION_ERROR);
    break;
}
?>

J'y comprends rien sad

#3 Re : Forum Général PHP » Sécurisation de la connexion » 02-05-2010 11:11:11

Bonsoir à vous,

J'ai compris mon erreur.  En fait je me basais sur les fichiers sur mon disque dur et non sur ceux de l'hébergeur.  J'ai donc trouvé le fichier qui abritait les bons logins et mot de passe. Une chose en moins wink

Par contre,

<?php

// on se connecte à MySQL
$db = mysql_connect('localhost', 'chatomon_login', 'chatomon_mdp');

// on sélectionne la base
mysql_select_db('chatomon_base',$db);

// on crée la requête SQL
$sql = 'SELECT make,model,vehicle_type,mileage,year,trans,price,features FROM listings ORDER BY make';

// on envoie la requête
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

// on fait une boucle qui va faire un tour pour chaque enregistrement
while($data = mysql_fetch_assoc($req))
    {
    // on affiche les informations de l'enregistrement en cours
   ?>
   <tr>
  <td><?php echo ''.$data['make'].' </br>'; ?></td>
    <td><?php echo ''.$data['model'].' </br>'; ?></td>
    <td><?php echo ''.$data['vehicle_type'].' </br>'; ?></td>
    <td><?php echo ''.$data['year'].' </br>'; ?></td>
    <td><?php echo ''.$data['mileage'].' </br>'; ?></td>
    <td><?php echo ''.$data['trans'].' </br>'; ?></td>
    <td><?php echo ''.$data['price'].' </br>'; ?></td>
    <td><?php echo ''.$data['features'].' </br>'; ?></td>
 
 
<?php
    }
// on ferme la connexion à mysql
mysql_close();
?>

Quand j'emploie ce code, ça fonctionne j'ai les infos que je veux.

Par contre, dès que je fais

<?php

 include '../Includes/configs/lesloginsetmotdepasse.php';
 
// on sélectionne la base
mysql_select_db($dbname,$db);

// on crée la requête SQL
$sql = 'SELECT make,model,vehicle_type,mileage,year,trans,price,features FROM listings';

// on envoie la requête
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

// on fait une boucle qui va faire un tour pour chaque enregistrement
while($data = mysql_fetch_assoc($req))
    {
    // on affiche les informations de l'enregistrement en cours
   ?>
   <tr>
  <td><?php echo ''.$data['make'].' </br>'; ?></td>
    <td><?php echo ''.$data['model'].' </br>'; ?></td>
    <td><?php echo ''.$data['vehicle_type'].' </br>'; ?></td>
    <td><?php echo ''.$data['year'].' </br>'; ?></td>
    <td><?php echo ''.$data['mileage'].' </br>'; ?></td>
    <td><?php echo ''.$data['trans'].' </br>'; ?></td>
    <td><?php echo ''.$data['price'].' </br>'; ?></td>
    <td><?php echo ''.$data['features'].' </br>'; ?></td>
 
 
<?php
    }
// on ferme la connexion à mysql
mysql_close();
?>

Ca ne fonctionne pas du tout.  Il ne se connecte pas et j'ai que des erreurs ou alors il se connecte mais pas à la bonne base de données (J'ai 3 bases chez mon hébergeur et il prend une autre)

Merci pour votre aide.

#4 Re : Forum Général PHP » Sécurisation de la connexion » 02-05-2010 11:11:11

ManicoW : Nos messages se sont croisés. 
Alors, à la lecture de ton message, je comprends rien de rien.  Faudra que je relise à tête reposée. 

Je suppose que le débat est fort intéressant mais n'ayant pas d'avis sur la question, j'y prendrai pas part wink

En fait, ma question est venue par rapport au principe de sécurité et aussi afin de ne pas "foutre en l'air" le travail fait par d'autre (les auteur de ce script)

Allez je mets mes lunettes, ventile le cerveaux et je relis tout ça wink

Merci à vous tous.

#5 Re : Forum Général PHP » Sécurisation de la connexion » 02-05-2010 11:11:11

Wawww merci beaucoup beaucoup pour toutes ces explications.

1) J'avais compris pour le chemin relatif ou absolu mais je ne savais pas que cela s'appelait comme ça.  J'ai vu ce genre de ligne un peu partout sur mon site.  Avec une explication, c'est plus clair.

C'est pas du https

3) Le type 404 est activé, j'ai essayé blabla.php ou nimportequoi.php et ça me redirige vers une erreur 404.  Ca doit être d'office prévu comme ça chez l'hébergeur.

4) J'ai prévu de faire un.htaccess dans toute la partie admin.

Merci encore.  Je vais essayer de tester tout cela dans la soirée.

#6 Re : Forum Général PHP » Sécurisation de la connexion » 02-05-2010 11:11:11

Jc a écrit :

Bonsoir

Alors dans le code fournit par xtg qui doit se situer dans ton include/require de page remplace les valeurs correspondantes par les tiennes manuellement.
Pour sécuriser ce fichier/ton site par rapport à ce fichier, ce que tu doit faire :
1) Le placer dans un répertoire hors de l'arborescence et y accèder dans ton code (uniquement fichier .php) via un chemin relatif exclusivement.
2) Faire un chmod dessus en 444.
3) configurer ton serveur sur un retour systematique d'erreur http 404 sur une page non trouvée (sinon accès à l'arborescence et donc aux fichiers) et si tu ne sais pas le faire ou peut pas le faire, place un fichier index.html avec une redirection dessus sur ta page de démarrage du site.
4) optionnel : protéger l'accès au répertoire par un mot de passe

Bonjour,

Merci pour ta réponse.  Comme cela reste très compliqué moi moi, j'avoue ne pas avoir tout compris.

1) Le placer dans un répertoire hors de l'arborescence et y accèder dans ton code (uniquement fichier .php) via un chemin relatif exclusivement.

Mon site est dans le répertoire public_html/monsite    Je place donc le fichier crée à la base du site ?  C'est quoi un chemin relatif ???

3) configurer ton serveur sur un retour systematique d'erreur http 404 sur une page non trouvée (sinon accès à l'arborescence et donc aux fichiers) et si tu ne sais pas le faire ou peut pas le faire, place un fichier index.html avec une redirection dessus sur ta page de démarrage du site.

Là je comprends rien de rien excepté que le but est que si un utilisateur trouve le nom de fichier, il n'y ai pas accès.  Comment peut on configurer le serveur en ce sens ?

4) optionnel : protéger l'accès au répertoire par un mot de passe

Tu me proposes .htacces ???


Merci pour aide et tes réponses.

#7 Re : Forum Général PHP » Sécurisation de la connexion » 02-05-2010 11:11:11

Merci à toi xTG pour ces réponses nocturnes.

Je connais les identifiants vu que c'est moi qui les ai crée.  J'ai accès par l'admin de mon hébergeur à toutes ces données.

J'attends demain avec impatience wink

Merci encore

#8 Re : Forum Général PHP » Sécurisation de la connexion » 02-05-2010 11:11:11

Bonsoir,

Merci pour cette réponse rapide.

Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'chatomon'@'localhost' (using password: NO) in /home/chatomon/public_html/smiley-auto.fr/excel.php  on line 17

Warning: mysql_select_db(): supplied argument is not a valid MySQL-Link resource in /home/chatomon/public_html/smiley-auto.fr/excel.php on line 20

Warning: mysql_query() [function.mysql-query]: Access denied for user 'chatomon'@'localhost' (using password: NO) in /home/chatomon/public_html/smiley-auto.fr/excel.php on line 26

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /home/chatomon/public_html/smiley-auto.fr/excel.php on line 26
Erreur SQL !

Voilà le message d'erreur.


En fait, ce que j'essaie surtout de comprendre (j'suis têtu wink )  c'est comment fonctionne la connexion à la base mysql vu que j'ai beau faire une recherche dans tous les fichiers du site, je ne trouve nulle part le login et le mot de passe que j'ai paramétré lors de l'install du site chez mon hébergeur. 
Le site fonctionne très bien, la communication avec les base est bonne mais je ne comprends pas où sont les login et mot de passe.

Effectivement xTG, aucun problème dans le premier code.  Pour moi ça peut rester comme ça mais niveau sécurité ?  N'y a t il pas un risque de laisser login et mot de passe dans le même fichier ?

Merci pour ton aide.

#9 Forum Général PHP » Sécurisation de la connexion » 02-05-2010 11:11:11

chatomon
Réponses : 15

Bonjour à tout le monde,

Je viens de créer (enfin créer est un grand mot) un site grâce à Openauto
Disons que j'ai juste fait quelques ajouts dans les pages par tatonnement n'y connaissant pas grand chose en php.

Maintenant, je bloque un peu d'où ma question.

Je fais donc appel à Mysql pour récupérer les données.

   1. <?php
   2.
   3. // on se connecte à MySQL
   4. $db = mysql_connect('localhost', 'login', 'password');
   5.
   6. // on sélectionne la base
   7. mysql_select_db('name of base',$db);
   8.
   9. // on crée la requête SQL
  10. $sql = 'SELECT make,model FROM listings';
  11.
  12. // on envoie la requête
  13. $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
  14.
  15. // on fait une boucle qui va faire un tour pour chaque enregistrement
  16. while($data = mysql_fetch_assoc($req))
  17.     {
  18.     // on affiche les informations de l'enregistrement en cours
  19.     echo '<b>'.$data['make'].' '.$data['model'].'</b></br>';
  20.     }
  21.
  22. // on ferme la connexion à mysql
  23. mysql_close();
  24. ?>

Voilà ce que j'ai fait.  Ca fonctionne, la base mysql est bien connectée, j'ai les infos qui s'affichent.
Par contre, j'ai voulu me baser sur ce qui avait été programmé à l'origine

   1. <?php
   2.
   3. // on se connecte à MySQL
   4. $db = mysql_connect($dbhost,$dbuser,$dbpass);
   5.
   6. // on sélectionne la base
   7. mysql_select_db($dbname,$db);
   8.
   9. // on crée la requête SQL
  10. $sql = 'SELECT make,model FROM listings';
  11.
  12. // on envoie la requête
  13. $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
  14.
  15. // on fait une boucle qui va faire un tour pour chaque enregistrement
  16. while($data = mysql_fetch_assoc($req))
  17.     {
  18.     // on affiche les informations de l'enregistrement en cours
  19.     echo '<b>'.$data['make'].' '.$data['model'].'</b></br>';
  20.     }
  21.
  22. // on ferme la connexion à mysql
  23. mysql_close();
  24. ?>

Ca fonctionne pas.

En fait, j'y connais pas grand chose en language internet mais j'en déduis que la ligne

$db = mysql_connect($dbhost,$dbuser,$dbpass);

fait appel à des infos qui sont dans un autre fichier. 

Je ne comprends pas pourquoi ça fonctionne pas.

De plus, j'ai trouvé le fichier avec $dbhost,$dbuser et $dbpass et les données qui correspondent ne sont pas du tout les bonnes valeurs pour se connecter à la base mysql.

Pouvez vous m'expliquer comment fonctionne le principe de sécurisation d'une connexion mysql et où sont stockées les données qui correspondent au bon login et mot de passe.

Merci d'avance pour votre aide.

Pied de page des forums

Propulsé par FluxBB