Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
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 27/03/2006, 08h44   #1
Invité de passage
 
Inscription : mars 2006
Messages : 44
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 44
Points : 2
Points : 2
Par défaut [Sécurité] probleme de panier

salut, j'ai cree un site sur lequel j'ai un pannier mais bon il marche pas.
quand j'ouvre le panier il m'ouvre la page avec le tablo ne contenant que la premiere ligne.
pkoi?
voici mon code:
Code :
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
<center>
 
    			<?
   				if (! isset($_SESSION['panier']) )
				{
 				$_SESSION['panier'] = array();
				}
				$produit = $_GET['noprod'];
				$lib = $_GET['liprod'];
				$pu=$_GET['pu'];
 
				echo "<H2>Votre panier</H2><TABLE BORDER=\"1\"><TR><TH>Produit</TH><th>Libelle</th><TH>Quantité</TH><th>Prix unitaire</th><th>Total</th></TR>";	
				for ($i=0; $i<count($_SESSION['panier']); $i++)
				{
				?>
 				<tr>
 				<td><? echo($produit); ?>
 				</td>
 				<td><? echo($lib); ?>
 				</td>
 				<td><input type='integer' name='nom' size='3' value='1'>
 				</td>
 				<td><? echo($pu); ?>
 				</td>
 				<td> 
 				</td>
				 </tr>			
 
				<?
			}
				echo '</TABLE><a href="index.php?env=1" style="color:red">valider votre commande</a><br>';
				echo '<a href="index.php?eff=1" style="color:red">effacer le pannier</a><br>';
				echo '<a href="index.php" style="color:red">retour</a>';
				?>
				</center>
merci d'avance
zebougha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/03/2006, 09h19   #2
Membre Expert
 
Inscription : janvier 2005
Messages : 1 249
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : janvier 2005
Messages : 1 249
Points : 1 417
Points : 1 417

Comment veux-tu afficher le contenu du panier ?
1) Tu ne fais pas session_start();
2) Tu n'affectes pas le contenu de $_SESSION['panier']
3) Tu ne tentes d'afficher que le contenu de ta variable GET, pas celui de la session.
Au passage, tu affiches sans validation ton GET => tu es perméable à une attaque XSS.
vg33 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/03/2006, 09h28   #3
Invité de passage
 
Inscription : mars 2006
Messages : 44
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 44
Points : 2
Points : 2
j'ai une session start() tout en haut de la page.
pour le probleme de menace c pas tres important le site ne sera jamais mis en ligne.
Sinon je ne comprend pas ce que tu veu en 2).
zebougha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/03/2006, 09h32   #4
Expert Confirmé
 
Avatar de titoumimi
 
Inscription : décembre 2003
Messages : 3 717
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : décembre 2003
Messages : 3 717
Points : 3 082
Points : 3 082
Citation:
Envoyé par vg33
Au passage, tu affiches sans validation ton GET => tu es perméable à une attaque XSS.
est ce que tu pourrai développer ou donner un lien stp, je me sens vaguement concerné d'un coup ...
titoumimi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/03/2006, 09h38   #5
Membre Expert
 
Inscription : janvier 2005
Messages : 1 249
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : janvier 2005
Messages : 1 249
Points : 1 417
Points : 1 417
Citation:
Envoyé par titoumimi
Citation:
Envoyé par vg33
Au passage, tu affiches sans validation ton GET => tu es perméable à une attaque XSS.
est ce que tu pourrai développer ou donner un lien stp, je me sens vaguement concerné d'un coup ...
http://julien-pauli.developpez.com/t...rite/?page=xss
vg33 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/03/2006, 09h40   #6
Membre Expert
 
Inscription : janvier 2005
Messages : 1 249
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : janvier 2005
Messages : 1 249
Points : 1 417
Points : 1 417
Citation:
Envoyé par zebougha
Sinon je ne comprend pas ce que tu veu en 2).
Quand ajoutes-tu à $_SESSION['panier'] le contenu de ton GET ?
vg33 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/03/2006, 09h41   #7
Membre confirmé
 
Avatar de ShinJava
 
Inscription : septembre 2004
Messages : 411
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 411
Points : 287
Points : 287
Citation:
Envoyé par titoumimi
Citation:
Envoyé par vg33
Au passage, tu affiches sans validation ton GET => tu es perméable à une attaque XSS.
est ce que tu pourrai développer ou donner un lien stp, je me sens vaguement concerné d'un coup ...
Pareil que titoumimi !
De plus, j'ai un probleme de compréhension sur la phrase "tu affiches sans validation ton GET" , c'est a dire ? Il faut verifier que le GET existe ? Verifier sa taille aussi (pour eviter une injection SQL) ?

merci d'avance

++
ShinJava
ShinJava est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/03/2006, 09h48   #8
Invité de passage
 
Inscription : mars 2006
Messages : 44
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 44
Points : 2
Points : 2
jamais!
Comment fait on pour ajouter les donnees a la session panier
zebougha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/03/2006, 09h50   #9
Membre confirmé
 
Avatar de ShinJava
 
Inscription : septembre 2004
Messages : 411
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 411
Points : 287
Points : 287
Citation:
Envoyé par vg33
Citation:
Envoyé par zebougha
Sinon je ne comprend pas ce que tu veu en 2).
Quand ajoutes-tu à $_SESSION['panier'] le contenu de ton GET ?
Oki merci
ShinJava est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/03/2006, 09h53   #10
Membre Expert
 
Inscription : janvier 2005
Messages : 1 249
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : janvier 2005
Messages : 1 249
Points : 1 417
Points : 1 417
On change de sujet, là...
Valider ton GET (ou ton POST...) revient à vérifier :
1) qu'il existe
2) qu'il ne contient que des caractètes autorisés.
Exemple d'attaque XSS avec le script précédent. Tu envoies un mail à un utilisateur du site avec le lien suivant :
Code :
<a href="ton_script.php?noprod=<script>alert('Voici une attaque XSS');</script>">Visualisez votre panier</a>
Quand le membre clique sur le lien, qui pointe bien vers ton site, un script se déclenche. Ici, c'est un simple alert(), mais on peut voler les infos des cookies, espionner la navigation... Lis le lien que j'ai donné plus haut, ou fais une recherche Google sur XSS.
Au passage, la précaution minimale est de passer par htmlentities() le contenu de toute donnée provenant de l'utilisateur avant affichage.
vg33 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/03/2006, 09h54   #11
Expert Confirmé
 
Avatar de titoumimi
 
Inscription : décembre 2003
Messages : 3 717
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : décembre 2003
Messages : 3 717
Points : 3 082
Points : 3 082
Merci vg33 pour ton lien. Effectivement, je controle mes valeurs au moment d'une insertion avec une DB, mais comme là il ne s'agit que d'affichage, je voyait mal où était la vulnerabilité

Merci encore
titoumimi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/03/2006, 09h54   #12
Membre Expert
 
Inscription : janvier 2005
Messages : 1 249
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : janvier 2005
Messages : 1 249
Points : 1 417
Points : 1 417
Citation:
Envoyé par zebougha
jamais!
Comment fait on pour ajouter les donnees a la session panier
Fais une recherche dans le manuel sur la concaténation de tableaux.
vg33 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/03/2006, 09h55   #13
Membre confirmé
 
Avatar de ShinJava
 
Inscription : septembre 2004
Messages : 411
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 411
Points : 287
Points : 287
Citation:
Envoyé par vg33
On change de sujet, là...
Valider ton GET (ou ton POST...) revient à vérifier :
1) qu'il existe
2) qu'il ne contient que des caractètes autorisés.
Exemple d'attaque XSS avec le script précédent. Tu envoies un mail à un utilisateur du site avec le lien suivant :
Code :
<a href="ton_script.php?noprod=<script>alert('Voici une attaque XSS');</script>">Visualisez votre panier</a>
Quand le membre clique sur le lien, qui pointe bien vers ton site, un script se déclenche. Ici, c'est un simple alert(), mais on peut voler les infos des cookies, espionner la navigation... Lis le lien que j'ai donné plus haut, ou fais une recherche Google sur XSS.
Au passage, la précaution minimale est de passer par htmlentities() le contenu de toute donnée provenant de l'utilisateur avant affichage.
Merci beaucoup, c'est bon à savoir !
Dsl pour le HS du message originel
ShinJava est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/03/2006, 10h07   #14
Invité de passage
 
Inscription : mars 2006
Messages : 44
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 44
Points : 2
Points : 2
je ne trouve pas!!!
zebougha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/03/2006, 10h19   #15
Membre Expert
 
Inscription : janvier 2005
Messages : 1 249
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : janvier 2005
Messages : 1 249
Points : 1 417
Points : 1 417
Va faire un tour du côté de array_merge().
Perso, ça m'a pris 15 secondes pour le trouver dans le manuel en tappant "array" dans la zone de recherche.
vg33 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/03/2006, 10h52   #16
Invité de passage
 
Inscription : mars 2006
Messages : 44
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 44
Points : 2
Points : 2
bon j'ai fait quelque modif voila ce que j'obtien:
Code :
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
<?
   				if (! isset($_SESSION['panier']) )
				{
 				$_SESSION['panier'] = array();
				}
				$i=0;
 
				$produit = $_GET['noprod'];
				$lib = $_GET['liprod'];
				$pu=$_GET['pu'];
				$_SESSION['panier'][$i]['produit']=$produit;
				$_SESSION['panier'][$i]['lib']=$lib;
				$_SESSION['panier'][$i]['pu']=$pu;
 
				echo "<H2>Votre panier</H2><TABLE BORDER=\"1\"><TR><TH>Produit</TH><th>Libelle</th><TH>Quantité</TH><th>Prix unitaire</th><th>Total</th></TR>";	
 
				for ($i=0; $i<count($_SESSION['panier']); $i++)
 
				{
 
				?>
 				<tr>
 				<td><? echo($_SESSION['panier'][$i]['produit']); ?>
 				</td>
 				<td><? echo($_SESSION['panier'][$i]['lib']); ?>
 				</td>
 				<td><input type='integer' name='nom' size='3' value='1'>
 				</td>
 				<td><? echo($_SESSION['panier'][$i]['pu']); ?>
 				</td>
 				<td> 
 				</td>
				 </tr>			
 
				<?
..................................
tjs le meme probleme et en plus il me marque trois erreur:
Warning: Cannot use a scalar value as an array in c:\documents and settings\j.lemeille\mes documents\easy php\easyphp1-8\www\lemeille\index.php on line 493

Warning: Cannot use a scalar value as an array in c:\documents and settings\j.lemeille\mes documents\easy php\easyphp1-8\www\lemeille\index.php on line 494

Warning: Cannot use a scalar value as an array in c:\documents and settings\j.lemeille\mes documents\easy php\easyphp1-8\www\lemeille\index.php on line 495
zebougha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/03/2006, 15h16   #17
Membre confirmé
 
Avatar de ShinJava
 
Inscription : septembre 2004
Messages : 411
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 411
Points : 287
Points : 287
Tu peux editer ton message et mettre les balises CODE pour ton code afin qu'il soit plus lisible, merci. Tu verras qu'il y a plus de personne qui repond quand on utilise ces balises.

De plus tu as des erreurs à la ligne 493 494 et 495, tu peux donner ces lignes.

++
ShinJava
ShinJava est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/03/2006, 19h30   #18
Invité de passage
 
Inscription : mars 2006
Messages : 44
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 44
Points : 2
Points : 2
je ne comprend pas ce que tu veu dire par balise CODE?
sinon les lignes ou il y a des erreurs sont :
$_SESSION['panier'][$i]['produit']=$produit;
$_SESSION['panier'][$i]['lib']=$lib;
$_SESSION['panier'][$i]['pu']=$pu;

PS: merci a tous, et desole de pas t'avoir pu repondre plus tot mais j'ete en cour.
zebougha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/03/2006, 22h00   #19
Membre confirmé
 
Avatar de ShinJava
 
Inscription : septembre 2004
Messages : 411
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 411
Points : 287
Points : 287
Bah apparement tu as modifier ton message donc c'est bon.
Mais en gros les balises code permet une meilleur lisibilité de ton code.

C'est plus facile pour nous de lire le code de la manière suivante :
Code :
1
2
3
4
5
 
<?php
$var = 1;
$_SESSION['Miaou'] = 1;
?>
Alors que toi tu le fait de la manière suivante :
<?php
$var = 1;
$_SESSION['Miaou'] = 1;
?>
(c'est moins agreable à lire)

Alors pour revenir à ton problème, les 3 lignes ont l'air bonnes sauf que pour la syntaxe j'aurais fait au lieu de :

Code :
echo($_SESSION['panier'][$i]['pu']);
j'aurais mis :
Code :
echo $_SESSION['panier'][$i]['pu'];
Mais bon, je pense pas que le problème vienne de là.

1/ Les 3 variables d'erreurs $_SESSION['panier'][$i] est-ce que tu les utilises autres part ? (avant ou apres, tu les met dans une BDD MySQL ?) Si oui balance les qu'on voit si c'est pas un probleme de redeclaration.

2/ Que vaut $produit, $lib et $pu ?
Fait un echo sur ces 3 variables voir ce que ca nous donne.

Vala vala
++
ShinJava
ShinJava est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/03/2006, 22h59   #20
Invité de passage
 
Inscription : mars 2006
Messages : 44
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 44
Points : 2
Points : 2
ok pour les code.
Sinon pour l'instant je ne les reutilise pas sinon ce sera pour mettre ds une base de donnees mysql.
Le site est un site "commercial" les variable correspondent aux numero du produit ($produit) qu'on souhaite ajoute au panier, la designation ($lib)et le prix ($pu)
zebougha est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h23.


 
 
 
 
Partenaires

Hébergement Web