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

Langage PHP Discussion :

[Sécurité] bug avec les variables de session!


Sujet :

Langage PHP

  1. #1
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut [Sécurité] bug avec les variables de session!
    Bonjour, j'ai un bug vraiment bozar que j'ai réussis a cerné...mais incroyable
    je vous explique
    Je gere l'affichage de mes page en fonction du type d'accès du l'utilisateur qui c'est loggé de la manière suivante:
    Code : 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
     
    <?php
     session_start();
    //Les variables de session sont enregistré après la page de login, donc si elle ne sont pas là..on redirige vers login
    if(isset($_SESSION["nom"])){
    	if(isset($_SESSION['acces'])){
    		if($_SESSION['acces']==1){
    		//Charge la partie graphique du haut user = absolu
    			require("../Graphique/framehautAbso.txt");
    		}
    		else if($_SESSION["acces"]==2){
    		//Charge la partie graphique du haut user = compatble
    			require("../Graphique/framehautComptable.txt");
    		}
    		else if($_SESSION["acces"]==3){
    		//Charge la partie graphique du haut user = Secretaire
    			require("../Graphique/framehautSecret.txt");
    		}
    		else if($_SESSION["acces"]==4){
    		//Charge la partie graphique du haut user = ajusteur
    			require("../Graphique/framehaut.txt");
    		}	
     
     
    	}
    	else{
    		header("location:login.php?erreur=2");
    	}
    ?>
    Il n'y a pas de probleme ca fonctionne en localhost

    Alors ce matin, j'envoie le tout sur le serveur distant..
    Je test, entre dans mes pages, tout est normal jusqu'a présent...excellent

    Alors je vais dans une page où je peux modifier les info d'un utilisateur

    Et là...Ben l'affichage de ma page est anormal : ..de ce sens:
    Les menus que je fixais dans le code plus haut, n'y sont pas, alors aucune mise en page...Je ne comprend pas pourquoi...!!!! alors je fait afficher ma variable $_session['acces'] car je la soupconne

    Surprise, au lieux d'etre un numéro comme d'habitude...elle à été changé pour "Accès Complet"...donc ne traite pas des conditions d'affichage

    Le probleme c'est que tout fonctionne correctement en localhost..j'ai fait la meme chose et la variable vaut 1...ce qui équivaut à l'accès complet

    J'assigne ces variables de session dans 1 seule page...Alors comment est-ce possible qu'elle ait la valeur "accès complet"????

    Ce qui me purge le plus c'est que tout est correct dans les autres pages!!Et en localhost pas de pb..Mais pourquoi dans cette page??

    Des idées pour solutionner mon probleme??
    J'utilise Apache2.0
    MySql 4.1.14
    PHP 4.4.0
    La perfection n'est pas un but, l'amélioration constante devrait l'être!
    La position des Développeurs de developpez avec les explications

  2. #2
    Membre confirmé Avatar de GregPeck
    Inscrit en
    Novembre 2005
    Messages
    530
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 530
    Points : 540
    Points
    540
    Par défaut
    Tu dois bien avoir quelque part les mots "accès complet", c'est sans doute à cet endroit là que ça déconne...

    Post le code contenant ces mots, on verra sans doute quelque chose

  3. #3
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut
    voilà le code de ma page

    php
    Code : 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
     
    session_start();
    //Sécurité pour empecher de bypasser la page de login
    if(isset($_SESSION["nom"])){
    	if($_SESSION["acces"]==1){
    	//Charge la partie graphique du haut user = absolu
     		require("../Graphique/framehautAbso.txt");
    	}
    	else if($_SESSION["acces"]==2){
    	//Charge la partie graphique du haut user = compatble
     		require("../Graphique/framehautComptable.txt");
    	}
    	else if($_SESSION["acces"]==3){
    	//Charge la partie graphique du haut user = Secretaire
     		require("../Graphique/framehautSecret.txt");
    	}
    	else if($_SESSION["acces"]==4){
    	//Charge la partie graphique du haut user = ajusteur
     		require("../Graphique/framehaut.txt");
    	}	
     
     	$nomUser = $_SESSION["nom"];
    	$prenomUser = $_SESSION["prenom"];
    	$userID = $_SESSION["userID"];
    	$nomComplet = strtoupper($prenomUser.' '.$nomUser); //met le nom complet en majuscules
     
     	mysql_connect("localhost","*****","******");
    	mysql_select_db("******");
    }
    else{
    	header("location:login.php?erreur=2");
    }
    javascript
    Code : 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
     
    <script language="javascript">
     
    	function VerifieChoix(choix){
    		if(choix=='1'){
    			document.frmOptionAjusteur.action="ajoutAjusteur.php";
    		}
    		else if(choix=='2'){
    			document.frmOptionAjusteur.action="optionAjusteur.php?continu=1#position";
    		}
    	}	
     
    	function ModifieAjusteur(ajusteurID){
    		document.frmOptionAjusteur.txtModifie.value = ajusteurID;
    		document.frmOptionAjusteur.action = "modifieAjusteur.php";
    	}
    </script>
    affichage de la page
    Code : 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
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
     
    <form name="frmOptionAjusteur" action="" method="post">
    	<table width="100%" align="center" border="0">
    		<tr valign="top">
    			<td align="right">
    				<p><b>Bienvenue, </b><? echo"$nomComplet";?></p>
    			</td>
    		</tr>
    		<tr valign="top">
    				<td>
    					<hr color="#002b87">
    				</td>
    			</tr>
    		<tr>
    			<td>
    				<br><br><center><font face="Verdana, Arial, Helvetica, sans-serif" color="#002b87"><b><u>Sélectionner un choix parmis les suivants</u></b></font></center>
    			</td>
    		</tr>
    		<tr valign="top" height="25%">
    			<td>
    				<table align="center" width="200">						
    					<tr>
    						<td align="center">
    						<br>
    							<input type="submit" name="btnNouveauAjusteur" value="Ajouter un ajusteur" onClick="VerifieChoix(1);">
    						</td>
    					</tr>
    					<tr>
    						<td>
    							<br><br>
    						</td>
    					</tr>
    					<tr>
    						<td align="center">
    							<input type="submit" name="btnContinuerDossier" value="Modifier les infos d'un ajusteur" onClick="VerifieChoix(2);">
    						</td>
    					</tr>
    				</table>
    			</td>
    		</tr>		
    				<?
    				if(isset($_GET["continu"])){
    					if($_GET["continu"]==1){
    						echo"
    						<tr valign=\"top\" height=\"70%\">
    							<td>
    								<a name=position></a>
    								<input type=\"hidden\" name=\"txtModifie\">
    								<hr color=\"#003399\" width=\"80%\"><br>
    								<table align=\"center\" width=\"100%\" border=\"1\">
    									<tr valign=\"middle\">
    										<td colspan=\"4\" align=\"center\">
    											<font face=\"Verdana, Arial, Helvetica, sans-serif\" color=\"#002b87\">Liste des ajusteurs</font>
    										</td>
    									</tr>
    									<tr>
    									<b>
    										<td align=\"center\">
    											<b>Type d'accès</b>
    										</td>
    										<td align=\"center\">
    											<b>Nom Complet</b>
    										</td>
    										<td align=\"center\">
    											<b>Actif</b>
    										</td>
    										<td align=\"center\">
    											<b>Action</b>
    										</td>
    									</tr>
    							";
    						$strScript = "SELECT ajusteurID,ajusteurPrenom,ajusteurNom,typeAcces,ajusteurActif
    										FROM tblajusteur
    										ORDER BY ajusteurNom";
    						$requete = mysql_query($strScript);	
    						$actif = "non";
    						$acces="";							
    						while($result = mysql_fetch_array($requete)){
    							if($result['ajusteurActif']=="1"){
    								$actif = "Oui";
    							}
    							else{
    								$actif = "Non";
    							}
    							if($result['typeAcces']==1){
    								$acces = "Accès Complet";
    							}
    							else if($result['typeAcces']==2){
    								$acces = "Accès Secrétaire";
    							}
    							else if($result['typeAcces']==3){
    								$acces = "Accès Ajuteur";
    							}	
    							echo "
    								<tr>
    									<td align=\"center\">
    										$acces
    									</td>
    									<td align=\"center\">
    										".$result['ajusteurPrenom']."&nbsp;".$result['ajusteurNom']."
    									</td>
    									<td align=\"center\">
    										$actif
    									</td>
    									<td align=\"center\">
    										<input type=\"submit\" value=\"Modifier info\" onclick=\"ModifieAjusteur(".$result['ajusteurID'].")\">
    									</td>
    								</tr>
    							";
    						}	
    						echo "</table>
    							</td>
    						</tr>
    						";
    					}
    				}
    				?>
     
    	</table>
    </form>
    voilà

    Un autre chose si je click 2 fois de suite sur le bouton modifier les info d'un ajusteur...et bien la meme chose se produit

    Les version de apache,php et mysql sont les meme sur le serveur que sur mon ordi en localhost

    merci bcp pour l'aide
    La perfection n'est pas un but, l'amélioration constante devrait l'être!
    La position des Développeurs de developpez avec les explications

  4. #4
    Membre confirmé Avatar de GregPeck
    Inscrit en
    Novembre 2005
    Messages
    530
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 530
    Points : 540
    Points
    540
    Par défaut
    En fait, c'est à cause de ces lignes là: $acces = "Accès Complet";
    A cause des register_globales. change ça en $acces2 = "Accès Complet"; et ça devrait fonctionner.

  5. #5
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut
    Ok j'essaie ca, mais pourquoi est ce que le tout fonctionne en localhost???
    La perfection n'est pas un but, l'amélioration constante devrait l'être!
    La position des Développeurs de developpez avec les explications

  6. #6
    Membre confirmé Avatar de GregPeck
    Inscrit en
    Novembre 2005
    Messages
    530
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 530
    Points : 540
    Points
    540
    Par défaut
    Si c'est bien ça le problème, c'est que tu n'a pas la même configuration de php. Regarde les 2 php.ini, tu trouvera des différences.

    Enfin si c'est bien ça le problème

  7. #7
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut
    Ok merci GregPeck c'était effectivement le cas
    Je ne vois tjrs pas pk en localhost ca fonctionne, est-ce que ca peut etre du au php.ini qui n'est pas configurer de la meme manière sur les 2 machines?

    Meci beaucoup pour ton aide
    bonne fin de journée
    La perfection n'est pas un but, l'amélioration constante devrait l'être!
    La position des Développeurs de developpez avec les explications

  8. #8
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut
    oki excellent!!!
    La perfection n'est pas un but, l'amélioration constante devrait l'être!
    La position des Développeurs de developpez avec les explications

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

Discussions similaires

  1. Souci avec les variables de session
    Par Mike888 dans le forum Services Web
    Réponses: 5
    Dernier message: 21/09/2007, 22h35
  2. [Free Pascal] Bug avec les variables fichiers Text
    Par Hibou57 dans le forum Free Pascal
    Réponses: 11
    Dernier message: 07/08/2007, 19h37
  3. Décalage avec les variables de session.
    Par gscorpio dans le forum Langage
    Réponses: 4
    Dernier message: 12/10/2006, 16h16
  4. Prob avec les variables de session
    Par King_T dans le forum Langage
    Réponses: 8
    Dernier message: 07/05/2006, 23h14
  5. Probleme avec les variables de session en ASP
    Par alhc2666 dans le forum ASP
    Réponses: 1
    Dernier message: 07/03/2006, 16h19

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