IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

[SQL] Informations et sécurité, pour mon site


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 20
    Par défaut [SQL] Informations et sécurité, pour mon site
    Bonjour, à tous voilà je suis en train de faire un site, ou l'on gère le contenu depuis une zone d'administration, j'affiche mes donné sur la page d'accueil avec un $_GET, je voudrais savoir s'il n'est pas possible à une personne de faire une injection sql ou modification

    Je vous met le code source de la page, pour l'instant, je n'ai pas fais le design
    Merci d'avance

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
     
    <?php
    if (!isset($langue_user) && !isset($_SESSION["ch_langue"])){
    $langue_user=substr($_SERVER["HTTP_ACCEPT_LANGUAGE"], 0, 2);
    	switch($langue_user){	
    // langue
    }
    include('includes/fonctions.php');
    connexion();
    if(isset($_GET['page']) AND !empty($_GET['page'])){
    //select where
    $page = $_GET['page'];
    $where = ' AND nom_page = \''.$page.'\'';
    } else { // where accueil
    $where = ' AND page_accueil = \'1\'';
    }
    if($_SESSION['ch_langue'] == 'fr'){
    $req = mysql_query("SELECT * FROM pages LEFT JOIN categorie ON pages.idCat = categorie.IDHashCat WHERE nom_cat = 'fr'".$where."") or die(mysql_error());
    $req_menu = mysql_query("SELECT * FROM menu WHERE fr = '1'") or die(mysql_error());
    }
    if($_SESSION['ch_langue'] == 'en'){
    $req = mysql_query("SELECT * FROM pages LEFT JOIN categorie ON pages.idCat = categorie.IDHashCat WHERE nom_cat = 'en'".$where."") or die('Erreur SQL'.mysql_error());
    $req_menu = mysql_query("SELECT * FROM menu WHERE en = '1'") or die(mysql_error());
    }
    $sql = mysql_fetch_array($req);
    //Variables 
    $TITRE_D = $sql['titre'];
    $CONTENU_D = $sql['contenu'];
    $titre = $TITRE_D;
    include('header_site.php');
    ?>
    <table width="90%" border="0" align="center" cellpadding="0" cellspacing="0">
      <tr>
        <td colspan="2" valign="top" align="center">Bannière MaHyTec </td>
      </tr>
      <tr>
      	<td width="18%">
         <?php if($_SESSION['ch_langue'] == 'fr'){ ?>Menu navigation <?php } else { ?> Navigation <?php } ?>
    	 </td>
        <td width="82%" valign="top"><?php if($_SESSION['ch_langue'] == 'fr'){ ?>Vous êtes sur <?php } else { ?> You surf on <?php } ?>
     >> <?php 
    	echo $TITRE_D;
    	?>	</td>
      </tr>
      <tr>
        <td valign="top"><?php
    	while($sql_menu = mysql_fetch_array($req_menu)){
    	echo '<a href="?page='.$sql_menu['url_menu'].'">'.$sql_menu['nom_menu'].'</a><br />';
    	}
    	?>
    	</td>
        <td width="82%" valign="top"><?php
    	echo $CONTENU_D;
    	?></td>
      </tr>
      <tr>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
      </tr>
    </table>
    <?php
    include('footer_site.php');
    ?>

    Merci d'avance

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 10
    Par défaut
    Si la directive magic_quotes_gpc n'est pas activé (et même suivant le cas), on pourrait injecter ce qu'on veut dans la requête de sélection de la page. Il faut obligatoirement utiliser mysql_real_escape_string.

    Donc déjà récupérer $_GET['page'], virer la pollution de magic_quotes_gpc s'il le faut, et escaper de manière correcte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $page = $_GET['page'];
    if(get_magic_quotes_gpc()) {
      $page = stripslashes($page);
    }
     
    $where = ' AND nom_page = \'' . mysql_real_escape_string($page) . '\'';
    Et là c'est bon

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 20
    Par défaut
    merci beaucoup pour cette réponse

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Quel forum pour mon site ?
    Par David 01 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 43
    Dernier message: 15/07/2009, 09h45
  2. SQL Server 2005 accessible depuis le net pour mon site internet
    Par anthonyBo dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 05/03/2008, 11h22
  3. Concordance des couleurs pour mon site !
    Par Joe-La-Boule dans le forum Mon site
    Réponses: 3
    Dernier message: 07/10/2006, 20h20
  4. [Sécurité] Sécurité de mon site
    Par bat2504 dans le forum Langage
    Réponses: 1
    Dernier message: 04/10/2006, 14h45
  5. quel doctype pour mon site ?
    Par Nimajneb dans le forum Général Conception Web
    Réponses: 7
    Dernier message: 15/06/2006, 20h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo