Injection de données dans les formulaires

12 messages dans ce sujet

Posté(e) · Signaler ce message

Bonjour,

On m'a fait remarquer qu'il etait possible d'injecter des scripts via les formulaires de peel

par exemple, si vous rentrez cette ligne dans le formulaire de recherche de peel :

<script>alert(document.cookie)</script>

meme resultat en faisant :

www.monsite/achat/recherche.php?motclef=%3Cscript%3Ealert(document.cookie)%3C/script%3E

Le numero de session s'affiche.

Pour éviter ce genre de faille(XSS) et éviter leur exploitation, il est conseillé de filtrer les caractères spéciaux tel que ">", "<", "/", ";"

Des infos sur le XSS:

Cross site scripting

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

en utilisant htmlentities ou htmlspecialchars ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

J'ai utilisé str_replace,

en remplaçant les caractères sensible par _ .

exemple :

$search = array("<",">","/","'","", "%3c", "%3e",";","?");

$replace = array("_","_","_","_","_","_","_","_","_");

$maVar = str_replace($search,$replace,$maVar);

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Vous pouvez écrire dans le formulaire de recherche

$motclef = htmlspecialchars(trim($_GET['motclef']), ENT_QUOTES);

ou

$search = array("<",">","/","'","", "%3c", "%3e",";","?");

$replace = array("_","_","_","_","_","_","_","_","_");

$motclef = str_replace($search,$replace,$motclef );

Puis

$SqlRequest = "SELECT id, reference, nom_".$_SESSION['langue'].", image1, prix, promotion FROM peel_produits WHERE

etat = '1' AND (reference LIKE '%" . $motclef . "%'

OR nom_".$_SESSION['langue']." LIKE '%" . $motclef . "%' OR descriptif_".$_SESSION['langue']."

LIKE '%" . $motclef . "%') LIMIT $start, $nb";

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour,

ah merci pruault,

avez vous une idée pour justement enlever les codes en base pour des fichiers csv...

car j'ai un script simpas mais j'ai du code dans mon csv...

et pas beau à voir ...

toute idée est bienvenue...

à bientôt...

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

il s'agit de balises html ? oui -> strip_tags

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour,

oui c'est du html: dans la base ça me donne pour les produits...

par exemple:

NOM DU PRODDUIT<br><br>...

pour 10 produit je les changent mais je vais en avoir plus de 500..

donc c'est ce style que tu me propose paulanna ?

<?php$text = '<p>Test paragraphe.</p> Autre texte';echo strip_tags($text);echo "\n";// Permet la balise <p>echo strip_tags($text, '<p>');?>

ce qui me donnera:

Test paragraphe. Autre texte

<p>Test paragraphe</p>. Autre texte

à bientôt...

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonsoir,

nouvel utilisateur de Peel Shopping 2.9.3

A quel endroit doit je mettre ce script dans le fichier recherche.php ?

Merci beaucoup pour laréponse et surtou pour ce superbe travail !

Vous pouvez écrire dans le formulaire de recherche

$motclef = htmlspecialchars(trim($_GET['motclef']), ENT_QUOTES);

ou

$search = array("<",">","/","'","", "%3c", "%3e",";","?");

$replace = array("_","_","_","_","_","_","_","_","_");

$motclef = str_replace($search,$replace,$motclef );

Puis

$SqlRequest = "SELECT id, reference, nom_".$_SESSION['langue'].", image1, prix, promotion FROM peel_produits WHERE

etat = '1' AND (reference LIKE '%" . $motclef . "%'

OR nom_".$_SESSION['langue']." LIKE '%" . $motclef . "%' OR descriptif_".$_SESSION['langue']."

LIKE '%" . $motclef . "%') LIMIT $start, $nb";

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

juste au dessus de la requete (dont tu as l'exemple dans le post ci-dessus) dans recherche.php :)

faut regarder d'abord ...

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour,

Les corrections pour éviter cette faille n'ont pas été faites par défaut dans la version de Peel Shopping disponible actuellement (3.0 beta) apparemment...

Pouvez-vous préciser un peu mieux où mettre ces modifs ?

Je vois a quoi sert

$search = array("<",">","/","'","", "%3c", "%3e",";","?");

$replace = array("_","_","_","_","_","_","_","_","_");

$motclef = str_replace($search,$replace,$motclef );

Mais ca, à quoi ca sert et où le mettre ? :

Puis

$SqlRequest = "SELECT id, reference, nom_".$_SESSION['langue'].", image1, prix, promotion FROM peel_produits WHERE

etat = '1' AND (reference LIKE '%" . $motclef . "%'

OR nom_".$_SESSION['langue']." LIKE '%" . $motclef . "%' OR descriptif_".$_SESSION['langue']."

LIKE '%" . $motclef . "%') LIMIT $start, $nb";

Il y a un mysql_query dans recherche.php...

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bon, après maints essais et maints tatonnements j'ai finalement trouvé les modifs à faire :

Dans achat\recherche.php :

Remplacer :

$resultat = mysql_query("SELECT id, reference, nom FROM peel_produits WHERE etat = '1' AND nom LIKE '%" . addslashes($_GET['motclef']) . "%' OR descriptif LIKE '%" . addslashes($_GET['motclef']) . "%' LIMIT $start,$nb");

par :

// pour filtrer les injections de données dans les formulaires (faille XSS)

$search = array("<",">","/","'","", "%3c", "%3e",";","?");

$replace = array("_","_","_","_","_","_","_","_","_");

$motclef = str_replace($search,$replace,$motclef);

$resultat = mysql_query("SELECT id, reference, nom FROM peel_produits WHERE etat = '1' AND nom LIKE '%" . $motclef . "%' OR descriptif LIKE '%" . $motclef . "%' LIMIT $start,$nb");

Puis remplacer

echo "<tr><td colspan=\"2\" class=\"normal\">Nous n'avons pas trouvé de résultats incluant le mot clé <b>". stripslashes($_GET['motclef']) ."</b>.<p></p><b>Suggestions :</b><br /><li type=\"square\"> Vérifiez l’orthographe du mot clé.<br /><li type=\"square\"> Essayez d'autres mots.<br /><li type=square> Utilisez des mots plus généraux.<p></p><a href=\"$wwwroot/achat/index.php\" class=\"normal\"><b>Cliquez ici</b></a> pour consulter directement notre catalogue.</td></tr>";

par

echo "<tr><td colspan=\"2\" class=\"normal\">Nous n'avons pas trouvé de résultats incluant le mot clé <b>". $motclef ."</b>.<p></p><b>Suggestions :</b><br /><li type=\"square\"> Vérifiez l’orthographe du mot clé.<br /><li type=\"square\"> Essayez d'autres mots.<br /><li type=square> Utilisez des mots plus généraux.<p></p><a href=\"$wwwroot/achat/index.php\" class=\"normal\"><b>Cliquez ici</b></a> pour consulter directement notre catalogue.</td></tr>";

Puis remplacer

print("<a class=\"petit\" href=\"recherche.php?motclef=".$_GET['motclef']."&start=".($start-$nb)."\">Page pr&eacute;c&eacute;dente</a>");

par

print("<a class=\"petit\" href=\"boutique/achat/recherche.php?motclef=".$motclef."&start=".($start-$nb)."\">Page pr&eacute;c&eacute;dente</a>");

Puis remplacer

print("<a class=\"petit\" href=\"recherche.php?motclef=".$_GET['motclef']."&start=".($start+$nb)."\">Page suivante</a>");

par

print("<a class=\"petit\" href=\"boutique/achat/recherche.php?motclef=".$motclef."&start=".($start+$nb)."\">Page suivante</a>");

(ce qui au passage corrige un bug sur les boutons précédent et suivant);

Puis remplacer

<a class="petit" href="<?php echo $_SERVER['PHP_SELF']."?motclef=.$_GET['motclef]."&start=".$index*$nb; ?>"><?php echo $index+1; ?></a>&nbsp;

par

<a class="petit" href="<?php echo $_SERVER['PHP_SELF']."?motclef=".$motclef."&start=".$index*$nb; ?>"><?php echo $index+1; ?></a>&nbsp;

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Petite correction par rapport à mon message ci-dessus (vieux motard que jamais !!!)

Remplacer

$motclef = str_replace($search,$replace,$motclef);

par

$motclef = str_replace($search,$replace,$_GET['motclef']);

car c'est la 1ère fois que motclef est utilisé, il faut bien l'initialiser.

Notez que chez certains hébergeurs ca marche sans ça.

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !


Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.


Connectez-vous maintenant

Twitter Advisto ecommerce

Facebook PEEL Shopping