Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/05/2007, 19h50   #1
Invité régulier
 
Inscription : mai 2007
Messages : 20
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 20
Points : 6
Points : 6
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 :
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
romanus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2007, 17h24   #2
Candidat au titre de Membre du Club
 
Inscription : mai 2007
Messages : 10
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 10
Points : 10
Points : 10
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 :
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
FlorentG est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 14h31   #3
Invité régulier
 
Inscription : mai 2007
Messages : 20
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 20
Points : 6
Points : 6
merci beaucoup pour cette réponse
romanus est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h05.


 
 
 
 
Partenaires

Hébergement Web