 | |
| Voir le sujet précédent :: Voir le sujet suivant |
| Auteur |
Message |
Ze-Créations dreamweaver mioche
 |
Panier PHP , Posté le: 16-08-2005 15:37 |
|
|
Au fait salemioche (je poste ici pour ne pas polluer les autres topics), j'aurais voulu avoir des renseignements relatifs à la sécurisation d'un panier en php.
On utilise déjà des sessions, pour l'id du produit et la quantité, et le prix du produit n'est accessible que via la base sql, par l'intermédiaire de l'id du produit. Le codage est pratiquement fini mais on voulait renforcer la sécu et demander l'avis de pros...on a essayé sur le forum h***ware, et comme d'hab, on s'est faits jeter  |
|
|
salemioche salemioche

|
|
Ze-Créations dreamweaver mioche
 |
renforcement de la sécu , Posté le: 17-08-2005 2:57 |
|
|
Bon encore merci ^^.
Ben le problème c'est qu'on doit faire le panier (pas le système de paiement qui est fourni par cyberplus/une banque) et on voudrait avoir un panier sécurisé dans le sens où quelqu'un de malveillant ne puisse pas acheter des articles moins cher que leur prix réel ou en grande quantité pour trois fois rien en exploitant une faille (type changement de prix à l'aide du code source du formulaire). Cette faille est déjà exploitable sur la version actuelle de la boutique à refondre, qui utilise la version non cryptée du système paypal.
On sait comment la résoudre, mais on aimerait savoir si tu aurais pas un petit truc de pro bon à savoir au sujet des autres failles exploitables (en mp si tu préfères ne pas donner de mauvaises idées a certains)...on connaît déjà l'injection SQL, et l'injection de PHP par GET...ces deux failles sont résolvables en se basant sur l'idée que "toute donnée externe doit être considérée falsifiée".
Bref, c'est pas vraiment un problème en fait, c'est plutôt une demande de tuyau...si tu sais pas, que t'as mal à la tête, que les enfants pleurent, ou que t'as pas le temps, merci quand même  |
|
|
salemioche salemioche

|
Panier PHP , Posté le: 17-08-2005 7:42 |
|
|
si un gars commande n'importe quoi n'importe comment, tu annules sa commande et le problème est reglé. les prix affichés faisant fois, c'est pour cela qu'il est important de bien ecrire les conditions générales de vente et d'ecrire que le client les accepte avant la commande finale.
tu peux regarder comment cela se passe sur http://www.nikozen.com
ensuite concernant les données de formulaire, c'est effectivement de ne jamais les prendre brut. Le mieux c'est de verifier que tous les caractères présent sont autorisés. si il s'agit d'un nom ou d'un prenom, seul les lettres, le - et eventuellement l'espace ' ' seront valide, moi je fais un truc de ce genre la:
| Code: |
| $safe_nom=preg_replace("/[^a-zA-Z- ]/",'',rtrim(rtrim(trim(substr($_GET['nom'], 0,25))),"\\")); |
il faut donc choisir pour chaque champ ce qui est possible ou non et eventuellement pour les chiffres, les bornes superieures ou inferieures, ou la liste des valeurs possibles ....
.
______________________________________
creation site internet - Hébergement web - Agence Web |
|
|
Ze-Créations dreamweaver mioche
 |
Panier PHP , Posté le: 18-08-2005 2:43 |
|
|
Merci ...Dis je peux t'embêter encore ?? On cherche des testeurs pour le panier quand il sera en ligne...(on s'est tellement faits pourrir sur le forum h***ware qu'on veut pas laisser passer de faille...et quand je dis pourrir c'est à un tel point que le modo en a eu marre et a vérouillé le sujet)  |
|
|
salemioche salemioche

|
|
Pers_Firewall frontpage mioche
 |
Panier PHP , Posté le: 29-01-2006 12:25 |
|
|
je recherche une personne maitrisant le php pour creation panier virtuel
un petit bleme sur ce script;
help....
<?php
session_start();
//init des variables
if (!isset($_SESSION['total'])) $_SESSION['total']=0;
if(!isset($_GET['ajoutpanier'])) $ajoutpanier="";//init de ajoutPanier si non déclaré
else $ajoutPanier=$_GET['ajoutpanier'];
if(!isset($_GET['modifpanier'])) $modifpanier="";//init de modifPanier si non déclaré
else $modifPanier=$_GET['modifpanier'];
if(!isset($_GET['supppanier'])) $supppanier="";//init de suppPanier si non déclaré
else $suppPanier=$_GET['supppanier'];
if(!isset($_GET['enregistreCommande'])) $enregistreCommande="";//init de enregistreCommande si non déclaré
else $enregistreCommande=$_GET['enregistreCommande'];
if ((!isset($_SESSION['liste']))&&($ajoutpanier=="")) $liste[]=array("VIDE",1,0,0);//init de liste si VIDE
if (isset($_SESSION['liste'])) $liste=$_SESSION['liste'];//recup de la liste de la session
//---------------------------------------------------------fin d'init des variables
?>
<?php require_once('Connections/panier.php'); ?>
<?php
mysql_select_db($database_Connexionmediassistance, $Connexionpanier);
//----------------------------------------------------AJOUT PANIER
if ($ajoutpanier=="AJOUTER")
{
$reference=$_GET['reference'];
$nb=1; //par défaut la quantité est = 1
$prix=$_GET['prix'];
$liste[]=array($reference,$nb,$prix,$prix);
$_SESSION['liste']=$liste;
//ajoute un article à la liste
}
//----------------------------------------------------MODIF PANIER
if ($modifpanier=="ACTUALISER")
{
for ($i=0;$i<count($liste);$i++)
{
$nbi='nb'.$i;
$liste[$i][1]=$_GET["$nbi"];//recup du nbr d'article dans la liste
$liste[$i][3]=$liste[$i][1]*$liste[$i][2];//prixArticle=nbre*prixUnitaire
}
$_SESSION['liste']=$liste;//mAj de la liste
}
//----------------------------------------------------SUPP PANIER
if ($supppanier=="SUPPRIMER")
{
$article=$_GET['article'];
for ($i=0;$i<count($liste);$i++)
{
if($article==$liste[$i][0])
array_splice($liste,$i,1);
//suppression de l'article
}
$_SESSION['liste']=$liste;//mAj de la liste
}
//----------------------------------------------------COMMANDER
if ($enregistreCommande=="COMMANDER")
{
if(!isset($_GET['action']))
$_SESSION['action']="ENREGISTRER";//mémorise l'action
header("Location: commande.php");
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript" type="text/JavaScript">
<!--
function MM_reloadPage(init) { //reloads the window if Nav4 resized
if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);
//-->
</script>
</head>
<body>
<div id="Layer1" style="position:absolute; left:17px; top:18px; width:355px; height:238px; z-index:1">
<table width="400" border="0" cellspacing="0">
<tr>
<td><p align="center">
<?php if($liste[0][0]!="VIDE") { ?>
</p>
<form action="file:///F|/sources-Dream-PHP/SOURCESlivreDreamPHP2004/BOUTIQUEMX/SITEboutiquemx/public/panier.php" method="get" >
<table width="400" border="1" align="center" cellspacing="0" bordercolor="#FF0000">
<tr>
<td><table width="400" border="0" align="center" cellpadding="0" cellspacing="0">
<tr bgcolor="#FF0000">
<td width="200"><div align="center"><font color="#FFFFFF"><strong><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Titre</font></strong></font></div></td>
<td width="200"><div align="center"><font color="#FFFFFF"><strong><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Quantit&</font></strong></font></div></td>
<td width="200"><div align="center"><font color="#FFFFFF"><strong><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Prix</font></strong></font></div></td>
<td width="50"><div align="center"><font color="#FFFFFF"><strong><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Supp</font></strong></font></div></td>
</tr>
<?php
$total=0.00;
for ($i=0;$i<count($liste);$i++)
{
$query_rspanier="select * from articles where reference = '".$liste[$i][0]."'";
//echo $query_rsPanier;
$rspanier = mysql_query($query_rspanier, $Connexionpanier) or die(mysql_error());
$row_rspanier = mysql_fetch_assoc($rspanier);
?>
<tr>
<td><div align="center"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><?php echo $row_mediassistance['modele']; ?></font></div></td>
<td><div align="center">
<select name="nb<?php echo $i ?>" id="nb">
<option value="1" <?php if($liste[$i][1]==1) echo "SELECTED"; ?>>1</option>
<option value="2" <?php if($liste[$i][1]==2) echo "SELECTED"; ?>>2</option>
<option value="3" <?php if($liste[$i][1]==3) echo "SELECTED"; ?>>3</option>
</select>
</div></td>
<td><div align="center"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><?php echo $row_mediassistance['prix']; ?></font></div></td>
<td><div align="center"><a href="file:///F|/sources-Dream-PHP/SOURCESlivreDreamPHP2004/BOUTIQUEMX/SITEboutiquemx/public/panier.php?suppPanier=SUPPRIMER&article=<?php echo $row_rsPanier['reference'] ?>"><img src="file:///F|/sources-Dream-PHP/SOURCESlivreDreamPHP2004/BOUTIQUEMX/SITEboutiquemx/images/Next.gif" width="14" height="13" border="0"></a></div></td>
</tr>
<?php
$total+=$row_rspanier['prix'] * $liste[$i][1];
}
$_SESSION['total']=$total;//mAj du total dans la session
?>
<tr>
<td ><div align="center"></div></td>
<td ><div align="center"></div></td>
<td ><div align="center"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>Total : <?php echo $total ?> Euros</strong></font></div></td>
<td ><div align="center"></div></td>
</tr>
</table></td>
</tr>
</table>
<p align="center">
<input type="submit" name="modifPanier" value="ACTUALISER">
<input name="enregistreCommande" type="Submit" value="COMMANDER">
</p>
</form>
<?php } else { ?>
<p align="center"><strong><font size="4" face="Verdana, Arial, Helvetica, sans-serif">Votre panier est vide</font></strong></p>
<?php }?>
</td>
</tr>
</table>
</div>
<div align="center">
<p>&
</p>
</div>
<p align="center">&</p>
</div>
</body>
</html>
<?php
?>
la base est mediassistance et la connexion mediassistance
merci d'avance |
|
|
|
 |
Accueil Forum
-> php |
Toutes les heures sont au format GMT + 1 Heure
|
| Page 1 sur 1 |
|
S'enregistrer
Profil
Se connecter pour vérifier ses messages privés
Rechercher
Membres
FAQ
Connexion
|