PHP|Débutant :: Forums

Advertisement

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

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

#1 09-03-2011 16:00:49

theavengers
Membre
Inscription : 13-10-2009
Messages : 81

securisarion d'une page , contrer intrusion par rajout de ligne ...

Bonjour à tous,

voila mon soucis, une gentille personne s'est introduite sur mon site et ma envoyé des infos sur ma bdd par mail.  J'ai de la chance, je reconnais big_smile

Il m'a simplement mis en évidence le fait de rajouter une ' à la fin de mon URL faisais afficher le début d'info :

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/www/d4d44zfg4389684/web/

En cherchant , j'ai trouvé ça, mais mes connaissances étant très limité, je prefere demander si ça pourrait résoudre mon probleme de faille :

<?php
if(isset($_GET['page']) AND file_exists($_GET['page'].'.php'))
{
include $_GET['page'].'.php';
}
else
{
include 'accueil.php';
}
?>

Voici ma page :

<?php

// connexion

$id = $_GET["id"];

mysql_connect($dbhost,$dblogin,$dbpassword);
mysql_selectdb($dbname);
$result=mysql_query("SELECT * FROM ma table WHERE id='$id'");

//affichage

if ($row=mysql_fetch_array($result)) {
   echo "<input type=hidden name=\"id\" value=$id>\n";


//fin de test


} else {
   echo "Désolé, mais raté";
}  mysql_close();
?>

Je vais corriger les *

Dernière modification par theavengers (09-03-2011 16:03:12)

Hors ligne

#2 09-03-2011 17:50:46

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : securisarion d'une page , contrer intrusion par rajout de ligne ...

Pour ton premier code il ne faut pas utiliser la variable $_GET mais la comparer à une liste de valeurs en dur dans ton code.

switch($_GET['page'])
{
  case 'accueil' : include("accueil.php"); break;
  case .........
  default : include("page_par_defaut.php");break;
}

Pour ton second problème tu ne vérifies aucunement ce que tu récupères.... Même problème donc.
Pour toute valeur insérée dans une base de donnée il faut la protéger : mysql_real_escape_string()

Hors ligne

#3 10-03-2011 09:19:13

theavengers
Membre
Inscription : 13-10-2009
Messages : 81

Re : securisarion d'une page , contrer intrusion par rajout de ligne ...

Merci pour le 1er code, je viens de voir que c'était pour les includes tongue Mais merci pour ton code, il me servira tôt ou tard.

Depuis hier, je n'arrête pas de surfer sur les failles PHP et je prends peur ...

Effectivement j'ai vu que mysql_real_escape_string() était le minimum ...

J'en ai profiter pour changer ce bout :

$_GET['id'] = addslashes ($_GET['id']);

Hors ligne

#4 10-03-2011 09:26:44

theavengers
Membre
Inscription : 13-10-2009
Messages : 81

Re : securisarion d'une page , contrer intrusion par rajout de ligne ...

Est que c'est bon comme ça ?

$_GET['id'] = addslashes ($_GET['id']);


mysql_connect($dbhost,$dblogin,$dbpassword);
mysql_selectdb($dbname);
$result=mysql_query("SELECT * FROM matable WHERE id='".$_GET['id']."' ");
mysql_real_escape_string($id);

Je viens de tester, ça à l'air bon mais je préfère avoir une confirmation... hmm

Dernière modification par theavengers (10-03-2011 09:58:36)

Hors ligne

Pied de page des forums