Sécurité : interdire le changement d'id
Posté : 12 nov. 2006, 21:06
Encore là, à errer sur le forum, en quête de réponses...
Cette fois il s'agit d'une faille de sécurité dans mon petit programme.
J'ai un fichier "edition.php" qui permet aux personnes enregistrées de modifier leur compte. Pour accéder à cette page leur identifiant (id) passe dans l'url et les paramètres de leur compte s'affichent dans des champs de texte.
Le problème est que si un utilisateur change l'id dans l'url, il peut accéder aux compte d'une autre personne... Pas génial !
J'ai cherché la solution auprès de " l'URL Rewriting", malheureusement mon hébergeur ne m'autorise pas à l'utiliser.
Qu'à cela ne tienne, j'ai cherché un autre moyen d'interdire l'accès à des identifiants autres que celui qui est attribué en démarrant une session. Voici ce que ça donne dans le code :
je suis à court d'idées là !
Cette fois il s'agit d'une faille de sécurité dans mon petit programme.
J'ai un fichier "edition.php" qui permet aux personnes enregistrées de modifier leur compte. Pour accéder à cette page leur identifiant (id) passe dans l'url et les paramètres de leur compte s'affichent dans des champs de texte.
Le problème est que si un utilisateur change l'id dans l'url, il peut accéder aux compte d'une autre personne... Pas génial !
J'ai cherché la solution auprès de " l'URL Rewriting", malheureusement mon hébergeur ne m'autorise pas à l'utiliser.
Qu'à cela ne tienne, j'ai cherché un autre moyen d'interdire l'accès à des identifiants autres que celui qui est attribué en démarrant une session. Voici ce que ça donne dans le code :
<?php
session_start();
if(!isset($_SESSION['pseudos']) && !isset($_SESSION['id'])) {
echo 'Vous n\'êtes pas autorisé à accéder à cette zone. Veuillez vous identifier.';
include('formidentification.php');
exit;
}
require_once ("configbdd.php");
$connexion=mysql_pconnect($dbhost, $utilisateur, $mdp);
if (!$connexion)
{
echo "La connexion a échoué.";
exit;
}
if (!mysql_select_db(ma_bdd, $connexion))
{
echo "La connexion a échoué.";
exit;
}
$id=$_GET['id'];
if ($_SESSION['id']<>$id) {
echo 'Vous n\'êtes pas autorisé à accéder au gestionnaire de cet utilisateur.';
include ('formidentification.php');
exit;
}
else {
$ma_requete=mysql_query("SELECT * FROM troupes WHERE id='$id'");
$result=mysql_fetch_array($ma_requete);
?>
<!-- formulaire qui reprend les infos de l'utilisateur -->
<?php
}
?>
Voilà... Ce qui se produit c'est qu'en fait personne n'a plus accès au fichier "edition.php", la redirection sur "formidentification.php" devient systématique.je suis à court d'idées là !