8792 sujets

Développement web côté serveur, CMS

Bonjour à toutes et à tous!

J'espère que vous allez bien!
Je ne sais pas trop si mon POST est hors charte... merci de me le signifier si c'est le cas ^^. Je reposterais dans un TOPIC plus approprié.

Le contexte:
Un moteur qui va chercher le contenu des pages dans la Base De Données [BDD par la suite].

La problématique:
Permettre de stocker des contenus composés entre autres d'instructions codées en PHP dans la BDD et de les rééxécuter par la suite.

Ma question:
Nan ne me sauter pas dessus Smiley langue ! Je connais la fonction eval() et ses effets Smiley cligne .
Mais ce n'est en faites pas éxactement ce que je veux :s.
Je m'explique: le contenu dominant stocké dans la BDD est de type 'mise en page HTML'.
En faites je stoque l'éxact équivalent du contenu d'un fichier include type 'bidon.inc.php'. Donc ce dernier contient des choses genre [exemple volontairement simple]:
<b>Un peu</b> de contenu lisible par l'utilisateur.
<? echo 'De l'affichage généré par PHP';
$textSQL = new elementSQL('requete blabla');
$textfinal = 'test '.htmlentities($textSQL->resultat[0]['texte'],ENT_QUOTE); ?>
<div>
 Voilà quoi!
</div>

... Ca éxiste Smiley lol ?
Je précise que la réponse souhaitée n'est apparament pas "Tu ne fais pas comme il faut! Stoque tes affichages sous forme 'echo "texte";'. Et ce pour la bonne et simple raison que le contenu en question est issu d'un WYSIWIG online (type HTMLArea) ne prennant pas en compte cet aspect.

Merci d'avance pour vos éléments de réponse et autres pistes de reflexion.
Modifié par Just (14 Aug 2006 - 11:55)
Administrateur
Bonjour,

j'avoue ne pas avoir tout compris à ce que tu demandes (c'est sûrement normal vu mes connaissances basiques en PHP Smiley confused ).
Le code que tu présentes, c'est extrait de la BDD ou bien c'est ce qui permet de l'extraire?

Sinon vu la nature hautement dynamique de PHP je dirais que tout est possible ou presque: on peut passer une variable en paramètre d'une fonction (sisi Smiley rolleyes ), le nom de la fonction appelée peut être contenu dans une variable, et cette variable peut être un tableau dont le nom et la clé seraient contenus dans d'autres variables, etc
Pour la simplicité et la sécurité de la chose par contre Smiley ohwell
Merci Felipe pour ta réponse ^^!

Nous avons dû poster sensiblement en même temps :x.
Modifié par Just (14 Aug 2006 - 11:52)
Administrateur
OK, grillé le temps de rédiger Smiley smile
Si ton sujet est [Résolu], n'hésite pas à faire ce qu'il faut! Smiley cligne

Côté sécurité, c'est un bel exemple issu de "l'autre côté de la barrière". Ceui qui arrive à insérer ce code dans une BDD peut faire plein de mauvaises choses amusantes et formellement interdites ...
Tout a fait d'accord!

Nous connaissons tous les lacunes de PHP en matière de sécurité Smiley decu . Bien que ça tende vers l'amélioration Smiley cligne .

Pour ma pars je ne stoque en BDD que des chaines que j'ai au préalable retraité ne serait que via:
$chaineAExternaliser = htmlentities($chaineDOrigine,ENT_QUOTES);


Je fais le nécessaire pour le "résolu" ^^!

Merci!
eval ... un superbe trou de sécurité s'il est mal géré.
Imagine le mec qui arrive à glisser <?php unlink("index.php"); ?> dans la BDD... et là je suis gentil
Administrateur
Just a écrit :
Nous connaissons tous les lacunes de PHP en matière de sécurité Smiley decu . Bien que ça tende vers l'amélioration Smiley cligne .

Là c'est un problème de développeur je pense Smiley smile
Toutes les sources extérieures de données doivent passer à travers une moulinette, sans exception et aucun langage permettant à des instructions d'insérer des instructions d'origine extérieure ne protégera le développeur qui veut faire ça. Smiley lol (toi tu en es conscient en posant la question mais on en trouvera bien un qui le soit pas).

Après PHP aide peut-être pas à concevoir une moulinette de la manière la plus simple qui soit Smiley jap