Insertion image texarea => problème output

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Insertion image texarea => problème output

Re: Insertion image texarea => problème output

par visualight » 07 avr. 2010, 12:31

Toi tu as "machin et il ne te fais pas \"machin il te fait "%xx%xxmachin ce qui ne protège pas les données.
Et tu pense que ça pourrais venir de quoi le fait que je n'ai pas \"machin mais "%xx%xxmachin ?
Je précise que je suis en serveur dédié chez OVH (release 2 gentoo).
Un problème de laxisme dans la config du serveur de la part des techniciens OVH ?


Maintenant autre question : Vu que magic_quotes est désactivé, comment protéger efficacement les données transmises en GET, POST, COOKIES .. ?
Est ce que par exemple un : htmlentities($_POST['texarea'], ENT_QUOTES); suffit ?

Merci,
raph

Re: Insertion image texarea => problème output

par devlop78 » 07 avr. 2010, 03:32

Les magic quotes permettent de faire automatiquement ce que fait la fonction addslashes, sur les données transmises par l'utilisateur (magic_quotes_gpc) et/ou provenant d'une source externe (magic_quotes_runtime). Lorsque les magic_quotes sont activées, tous les caractères ' (apostrophes), " (guillemets), \ (antislash) et NULL sont donc échappés par un antislash.

J'ai envie de dire : je vois pas le rapport

Toi tu as "machin et il ne te fais pas \"machin il te fait "%xx%xxmachin ce qui ne protège pas les données.

Re: Insertion image texarea => problème output

par stealth35 » 06 avr. 2010, 20:26

ouai a chaque fois que vous l'utilisé y'a un chaton qui meurt

Image

Re: Insertion image texarea => problème output

par Calimero » 06 avr. 2010, 19:24

http://www.phpfrance.com/tutoriaux/inde ... gic-quotes (2005 le tuto quand même).
Pour résumer, les magic quotes ont été créées pour les débutants, et font de PHP un des languages les moins sensibles à l'injection SQL. Néanmoins, une fois que vous comprenez bien leur fonctionnement, il est préférable de les désactiver et de protéger vos données vous même à l'aide des fonctions d'échappement de votre SGBD. C'est plus efficace et plus portable !
Pour la petite histoire, depuis l'écriture du tuto les magic_quotes sont maintenant désactivées par défaut dans les versions actuelles de PHP, et leur usage est officiellement déprécié ( :arrow: Don't Use It )

Re: Insertion image texarea => problème output

par visualight » 06 avr. 2010, 19:00

Ouai mais j'ai au moins appris l'existence de glob() ;)
héhé ;)

Re: Insertion image texarea => problème output

par visualight » 06 avr. 2010, 18:57

J'ai trouvé !
magic_quotes_gpc = On dans php.ini

Donc pour résoudre le problème il faut faire => stripslashes($_POST['textarea']);
OU => désactiver magic_quotes ! (magic_quotes_gpc = off)

Je ne sais pas si c'est plus judicieux de désactiver magic_quotes ou le laisser actif et utiliser stipslashes
Pouvez-vous m'indiquer la bonne méthode ?

Merci,

a+
raph

Re: Insertion image texarea => problème output

par devlop78 » 06 avr. 2010, 17:00

Il y a autre chose que tu peux faire c'est tester ton script sur un autre serveur pour voir si cela vient de lui ou non. Tester aussi depuis un autre navigateur, etc.

Re: Insertion image texarea => problème output

par devlop78 » 06 avr. 2010, 16:57

Ouai mais j'ai au moins appris l'existence de glob() ;)

Re: Insertion image texarea => problème output

par visualight » 06 avr. 2010, 16:52

J'appelle ma page d'administration comme ceci :
<?php
echo '<div id="body"><div id="full"><p class="fullTop"></p>';

// Définition du tableau pour les pages
	 define('PATH_WBM', './'.$CfgDirSys.'/'.$CfgDir_Pages.'/'.$CfgDir_wbm.'/');
	 $tableau = glob(PATH_WBM . '*.wbm.php');

		if (isset($_GET['wm']) AND in_array(PATH_WBM . $_GET['wm'] . ".wbm.php", $tableau)) {
		 $wbm_pageInclude = PATH_WBM . $_GET['wm'] . '.wbm.php';
		} else {
		 $wbm_pageInclude = PATH_WBM .  'dashboard.wbm.php';
		}
		 include ($wbm_pageInclude);



echo '<p class="fullBottom"></p></div><br class="spacer" /></div>';


?>

C'est franchement bizzare comme truc ...

Re: Insertion image texarea => problème output

par devlop78 » 06 avr. 2010, 16:51

Ouaip ... je vois pas. Soit tu n'as pas mis tout le code, soit ... franchement j'en sais rien !

Re: Insertion image texarea => problème output

par visualight » 06 avr. 2010, 16:50

Et voici mon doctype :

Code : Tout sélectionner

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO8859-1" /> <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7"> ...

Re: Insertion image texarea => problème output

par visualight » 06 avr. 2010, 16:48

QuickNav :
<?php
	// QUICK-NAV TOOLS
	if (!isset ($_SESSION ['quicknav'])){
	 $_SESSION ['quicknav'] = array();
	}
	
	if (isset ($_GET['p']) AND $_GET['p'] == 'galleryDetails') {
			 
		if (empty ($_SESSION ['quicknav'])) {
		 array_push($_SESSION ['quicknav'], array($title, $galid));
		}
			 
		if (!in_array (array ($title, $galid), $_SESSION ['quicknav'])) {
		 array_push($_SESSION ['quicknav'], array($title, $galid));
		}
				
	} elseif (isset ($_GET['p']) AND $_GET['p'] == 'webministration') {
		
		if (!isset ($_GET['wm']) AND empty ($_GET['wm'])) {
		 $wm = 'dashboard';
		} else {
		 $wm = $_GET['wm'];
		}
		
		if (empty ($_SESSION ['quicknav'])) {
		 array_push($_SESSION ['quicknav'], array($title, $wm));
		}
	
		if (!in_array (array ($title, $wm), $_SESSION ['quicknav'])) {
		 array_push($_SESSION ['quicknav'], array($title, $wm));
		}
	}
		
	 // On Teste l'index parent de l'array par rapport à un titre donné et on rajoute 1 puis on supprime.
	 $CurrentID = recursive_array_search($title,$_SESSION ['quicknav']) +1;
	 array_splice($_SESSION ['quicknav'], $CurrentID);

	 
	 // On implémente la navigation QuickNav
	 echo '<div id="quickNav">Quick Nav : ';
			 
	for ( $i = 0; $i <= count($_SESSION ['quicknav'])-1; $i++ ) {
	
		if (is_numeric ($_SESSION ['quicknav'][$i][1])) {
		 echo '<a href="'.$_SERVER['PHP_SELF'].'?p=galleryDetails&galid='.$_SESSION ['quicknav'][$i][1].'" target="_self">'.$_SESSION ['quicknav'][$i][0].'</a> / ';
		} else {
		 echo '<a href="'.$_SERVER['PHP_SELF'].'?p=webministration&wm='.$_SESSION ['quicknav'][$i][1].'" target="_self">'.$_SESSION ['quicknav'][$i][0].'</a> / ';
		}
	}
	
	echo '</div>';
	
?>

Webmin_Menu :
<?php

	 echo '<div class="container4">
	 <div class="menu4">
	 <ul>';
			 
	 echo '<li class="assistant"><a href="'.$_SERVER['PHP_SELF'].'?p=webministration&wm=assistant">Assistant</a></li>';
			
	 echo '<li class="page"><a href="#">Gestion Pages</a>
	 
	 <ul>
	 <li class="add"><a href="'.$_SERVER['PHP_SELF'].'?p=webministration&wm=page_add">Ajouter Page</a></li>
	 <li class="edit"><a href="'.$_SERVER['PHP_SELF'].'?p=webministration&wm=page_editdel">Editer Page</a></li>
	 <li class="del"><a href="'.$_SERVER['PHP_SELF'].'?p=webministration&wm=page_editdel">Supprimer Page</a></li>
	 </ul></li>';
			
	 echo '<li class="objets"><a href="#">Gestion Objets</a>
	 
	 <ul>
	 <li class="add"><a href="'.$_SERVER['PHP_SELF'].'?p=webministration&wm=objet_add">Ajouter Objet</a></li>
	 <li class="edit"><a href="'.$_SERVER['PHP_SELF'].'?p=webministration&wm=objet_editdel">Editer Objet</a></li>
	 <li class="del"><a href="'.$_SERVER['PHP_SELF'].'?p=webministration&wm=objet_editdel">Supprimer Objet</a></li>
	 
	 </ul></li>';
			
	 echo '<li class="users"><a href="#">Gestion Utilisateurs</a>
	 
	 <ul>
	 <li class="add"><a href="'.$_SERVER['PHP_SELF'].'?p=webministration&wm=user_add">Ajouter User</a></li>
	 <li class="edit"><a href="'.$_SERVER['PHP_SELF'].'?p=webministration&wm=user_editdel">Editer User</a></li>
	 <li class="del"><a href="'.$_SERVER['PHP_SELF'].'?p=webministration&wm=user_editdel">Supprimer User</a></li>
	 
	 </ul></li>';

	 echo '<li class="ip"><a href="#">Gestion IP</a>
	 
	 <ul>
	 <li class="edit"><a href="'.$_SERVER['PHP_SELF'].'?p=webministration&wm=ip_editdel">Voir/Editer IP</a></li>
	 <li class="del"><a href="'.$_SERVER['PHP_SELF'].'?p=webministration&wm=ip_editdel">Supprimer IP</a></li>
	 <li class="delall"><a href="'.$_SERVER['PHP_SELF'].'?p=webministration&wm=ip_empty">Vider Tout</a></li>
	 
	 
	 </li>';	 
			 
	 echo '</ul>
	 </div></div>';
?>

Re: Insertion image texarea => problème output

par devlop78 » 06 avr. 2010, 16:44

Dans

include ('.dirsys/inc/quickNav.inc.php');

include ('.dirsys/inc/webmin_menu.inc.php');


il y a quoi ?

Re: Insertion image texarea => problème output

par visualight » 06 avr. 2010, 16:40

Voici le code complet de la page concernée :
	 // On définis le titre interne pour le quickNav
	 $title = 'Webmin - Page-Add';

	 // On inclus la navigation QuickNav
	 include ('.dirsys/inc/quickNav.inc.php');

	 // Titre de la page
	 echo '<h2 class="galleryFullTitle">Webmin - Ajout d\'une page</h2>';
	 
	 // On inclus le menu administrateur
	 include ('.dirsys/inc/webmin_menu.inc.php');
	 
	 echo '<script type="text/javascript">
	 
	 function CheckRadio_HideShowDiv (check_id, id_hide, id_show) {
	
	  if(id_hide) {
	  var baliseHide = document.getElementById(id_hide);
	  
	  if (baliseHide.style.display == "block" && document.getElementById(check_id).checked == true) {
	  baliseHide.style.display = "none";
	 }
	 }
	 
	 if(id_show) {	
	 var baliseShow = document.getElementById(id_show);
	
	 if (baliseShow.style.display == "none" && document.getElementById(check_id).checked == true) {
	 baliseShow.style.display = "block";
	 } else if (baliseShow.style.display == "block" && document.getElementById(check_id).checked == false) {
	 baliseShow.style.display = "none";
	 }
	 }
	 }
	 </script>';
	 
	 // Début de la mise en page de gauche
	 echo '<div id="pageadd">';
	 
	 echo '<form name="pageadd" action="'.$_SERVER['PHP_SELF'].'?p=webministration&wm=page_add" method="POST" target="_self">
	 
	 <div class="pageadd_left">
	 <label>Type de page :</label>
	 <select name="page_type">
	 <option selected="selected">Choisissez ...</option>
	 <option value="admin">admin</option>
	 <option value="ecran">ecran</option>
	 <option value="gerant">gerant</option>
	 <option value="patron">patron</option>
	 <option value="production">production</option>
	 <option value="technique">technique</option>
	 </select>
	 </div>
	 
	 <div class="pageadd_right">
	 <p>Veuillez choisir le type de page de vous souhaitez créer</p>
	 </div>
	 
	 <div class="pageadd_border"><img src="medias/images/hr-dotted.png" /></div>
	 
	 <div class="pageadd_left">
	 <div id="pageadd_calendar-left">
	 <a name="date"></a>
	 <label>Date de création :</label>
	 <input class="border" type="text" size="10" maxlength="10" readonly name="page_date">
	 </div>
	 <div id="pageadd_calendar-left">
	 <a href="#date" onclick="displayCalendar(document.forms[0].page_date,\'yyyy/mm/dd\',this)" target="_self"><img src="medias/images/icon-calendar.png" /></a>
	 </div>
	 </div>
	 
	 <div class="pageadd_right">
	 <p>Veuillez Indiquez la date de création de la page</p>
	 </div>
	 
	 <div class="pageadd_border"><img src="medias/images/hr-dotted.png" /></div>
	 
	 <div class="pageadd_left">
	 <label>Titre de la page :</label>
	 <input class="border" type="text" size="50" maxlength="50" name="page_title" />
	 </div>
	 
	 <div class="pageadd_right">
	 <p>Veuillez Indiquer le titre de la page (50 caractères max).<br />
	 Le titre apparait en haut de la page.</p>
	 </div>
	 
	 <div class="pageadd_border"><img src="medias/images/hr-dotted.png" /></div>

	 <div class="pageadd_left">
	 <label>Titre interne :</label>
	 <input class="border" type="text" size="23" maxlength="50" name="page_int_title" />
	 </div>
	 
	 <div class="pageadd_right">
	 <p>Veuillez Indiquer le titre interne de la page (50 caractères max).<br />
	 Ce titre n\'apparait pas. Il sert au classement interne</p>
	 </div>
	 
	 <div class="pageadd_border"><img src="medias/images/hr-dotted.png" /></div>

	 <div class="pageadd_left">
	 <label>Lieu :</label>
	 <input class="border" type="text" size="30" maxlength="100" name="page_place">
	 </div>

	 <div class="pageadd_right">
	 <p>Veuillez Indiquer le lieu où se trouve le type de la page (100 caractères max).<br />
	 (ex.: si un type "ecran" se situe à liege, le lieux est liege)</p>
	 </div>
	 
	 <div class="pageadd_border"><img src="medias/images/hr-dotted.png" /></div>	 
	 
	 <div class="pageadd_left">
	 <label>Activer la description :</label>
	 <input type="checkbox" name="descr_active" id="descr_active" onClick="javascript:CheckRadio_HideShowDiv(this.id,\'\',\'page_descr\')" />
	 
	 <div id="page_descr" style="display:none;">
	 <textarea name="page_descr" id="textarea" cols="55" rows="10"></textarea>
	 </div>
	 </div>
	 
	 <div class="pageadd_right">
	 <p>Veuillez cocher pour activer la description de la page</p>
	 </div>
	 
	 <div class="pageadd_border"><img src="medias/images/hr-dotted.png" /></div>	 
	 
	 <div class="pageadd_left">
	 <label>Activer la galerie video :</label>
	 <input type="checkbox" name="video_active" id="video_active" onClick="javascript:CheckRadio_HideShowDiv(this.id,\'\',\'videotools\')" />
	 
	 <div id="videotools" style="display:none;">
 	 <label>Activer le partage de video :</label>
	 <input type="checkbox" name="video_share_active" id="video_share_active" />
	 </div>
	 </div>

	 <div class="pageadd_right">
	 <p>Veuillez cocher pour activer la galerie video de la page.<br />
	 Si vous le désirez, vous pouvez cocher ensuite le partage de video</p>
	 </div>
	 
	 <div class="pageadd_border"><img src="medias/images/hr-dotted.png" /></div>	 	 
	 
	 
	 <div class="pageadd_left">
 	 <label>Activer la galerie photo</label>
	 <input type="checkbox" name="photo_active" id="photo_active" onClick="javascript:CheckRadio_HideShowDiv(this.id,\'\',\'phototools\')" />
	 
	 <div id="phototools" style="display:none;">
  	 <label>Galerie photo locale</label>
  	 <input type="radio" name="photo_local" value="true" id="photolocal_0" onClick="javascript:CheckRadio_HideShowDiv(this.id,\'flickr\',\'watermark\')" />
  	 
	 <label>Galerie photo Flickr</label>
	 <input type="radio" name="photo_local" value="false" id="photolocal_1" onClick="javascript:CheckRadio_HideShowDiv(this.id,\'watermark\',\'flickr\')" />

  	 <div id="watermark" style="display:none;">
  	 <label>Activer le watermark</label>
	 <input type="checkbox" name="watermark" id="watermark" />
  	 </div>
	 	 
	 <div id="flickr" style="display:none;">
	 <label>Lien de la galerie flickr :</label>
	 <input type="text" size="30" maxlength="255" name="page_flickr_url">
	 </div>
	 </div>
	 </div>

	 <div class="pageadd_right">
	 <p>Veuillez cocher pour activer la galerie photo de la page.<br />
	 Choisissez ensuite entre galerie photo locale ou flickr.<br />
	 Si vous choisissez flickr comme galerie indiquez le lien flickr.<br />
	 Sinon, choisissez si le watermark doit etre actif.</p>
	 </div>
	 
	 <div class="pageadd_border"><img src="medias/images/hr-dotted.png" /></div>
	 
	 <div class="pageadd_left">	 
	 <label>Activer le porte documents :</label>
	 <input type="checkbox" name="docu_active" id="docu_active" />
	 </div>
	 
	 <div class="pageadd_right">
	 <p>Veuillez cocher pour activer le porte document de la page.</p>
	 </div>
	 
	 <div class="pageadd_border"><img src="medias/images/hr-dotted.png" /></div>
	 
	 
	 
	 <div class="pageadd_left">
	 <label>Activer les options liées :</label>
	 <input type="checkbox" name="options_active" id="options_active" />
	 </div>
	 
	 <div class="pageadd_right">
	 <p>Veuillez cocher pour activer les options liées de la page.</p>
	 </div>
	 
	 <div class="pageadd_border"><img src="medias/images/hr-dotted.png" /></div>
	 
	 <div class="pageadd_right">
	 <input type="submit" value="Créer la nouvelle page" />
	 </div>
	 
	 <br class="spacer" />

	 </form>';
	 
	 // Fin du div pageadd
	 echo '</div>';
	 
	function setValue ($checkbox) {
	 
		if (isset ($checkbox) AND !empty ($checkbox) AND $checkbox == 'on') {
		return 'true';
		} else {
		return 'false';
		}
	}
	 
	 
	if ((isset ($_POST['page_type']) AND !empty ($_POST['page_type'])) AND (isset ($_POST['page_date']) AND !empty ($_POST['page_date']))
	AND (isset ($_POST['page_title']) AND !empty ($_POST['page_title'])) AND (isset ($_POST['page_int_title']) AND !empty ($_POST['page_int_title']))
	AND (isset ($_POST['page_place']) AND !empty ($_POST['page_place'])))
	{
	
	 $page_type = $_POST['page_type'];
	 $page_date = $_POST['page_date'];
	 $page_title = $_POST['page_title'];
	 $page_int_title = $_POST['page_int_title'];
	 $page_place = $_POST['page_place'];
	 $description_active = setValue ($_POST['descr_active']);
	 $description = $_POST['page_descr'];
	 $video_active = setValue ($_POST['video_active']);
	 $videoshare_active = setValue ($_POST['video_share_active']);
	 $photo_active = setValue ($_POST['photo_active']);
	 $photolocal_active = $_POST['photo_local'];
	 $watermark_active = setValue ($_POST['watermark']);
	 $photoflickr_url = $_POST['page_flickr_url'];
	 $document_active = setValue ($_POST['docu_active']);
	 $options_active = setValue ($_POST['options_active']);
	 
	
	echo 'page_type : '.$page_type.'<br />';
	echo 'page_date : '.$page_date.'<br />';
	echo 'page_title : '.$page_title.'<br />';
	echo 'page_int_title : '.$page_int_title.'<br />';
	echo 'page_place : '.$page_place.'<br />';
	
	echo 'descr_active : '.$description_active.'<br />';
	echo 'description : '.$description.'<br />';
	
	echo 'video_active : '.$video_active.'<br />';
	echo 'video_share_active : '.$videoshare_active.'<br />';
	
	echo 'photo_active : '.$photo_active.'<br />';
	echo 'photo_local : '. $photolocal_active.'<br />';
	echo 'watermark : '.$watermark_active.'<br />';
	echo 'flickr_url : '.$photoflickr_url.'<br />';
	
	echo 'docu_active : '.$document_active.'<br />';
	echo 'options_active : '.$options_active.'<br />';
	
	} 

Re: Insertion image texarea => problème output

par devlop78 » 06 avr. 2010, 16:38

%5C%22 est \"

Peux tu donner ton code entier de la page, j'ai l'impression qu'il y a une fonction bizarre qui traine.