créer un site
Salemioche.net : creer un site internet - retour au site - accueil du forum





Panier PHP

Poster un nouveau sujet sur php   Répondre au sujet à php:Panier PHP    Accueil Forum -> php
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
Ze-Créations
dreamweaver mioche
dreamweaver mioche
MessagePanier 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 Sad
salemioche
salemioche
salemioche
MessagePanier PHP , Posté le: 16-08-2005 16:00

je vois pas bien ou est le pb ?!

(j'ai déplacé le sujet et mis un VRAI titre)
.
.
______________________________________
creation site internet - Hébergement web - Agence Web
Ze-Créations
dreamweaver mioche
dreamweaver mioche
Messagerenforcement 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 Razz
salemioche
salemioche
salemioche
MessagePanier 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
dreamweaver mioche
MessagePanier PHP , Posté le: 18-08-2005 2:43

Merci Razz ...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) Embarassed
salemioche
salemioche
salemioche
MessagePanier PHP , Posté le: 18-08-2005 9:58

eventuellement ouvre un autre post avec ta requete, désolé, mais je n'aurais pas le temps....
.
______________________________________
creation site internet - Hébergement web - Agence Web
Pers_Firewall
frontpage mioche
frontpage mioche
MessagePanier 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
Montrer les messages depuis:   
Poster un nouveau sujet sur php   Répondre au sujet à php:Panier PHP    Accueil Forum -> php Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1

 
Sauter vers:  
S'enregistrerS'enregistrer
ProfilProfil
Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés
RechercherRechercher
Liste des MembresMembres
FAQFAQ
ConnexionConnexion 


Nom de domaine
Enregistrement, transfert, gestion:
Nom de domaine

Hébergement
Trouver un hébergeur











Salemioche.net

créer un site web internet
Création site internet
Nom de domaine
blog gratuit
Idées Web

St Barth
Rachat de crédit
protection rapprochée
aménagement de bureau
Affilzen

Jumeaux
Communiqué de Presse
Piscine
Argent
Publier

Publier un article sur votre site internet et boostez sa visibilité. avec Pipelette
Présentez votre site web
Partenaires

forums
forum gratuit
Casino
Piscine
© Mentions Légales - CV