eval et sa sécurité

Mammouth du PHP | 1967 Messages

28 août 2010, 00:41

Bonjour, j'envisage d'utiliser eval dans mon script et je voudrais votre avis sur la sécurité.

Je l'utilise afin d'inclure dans ma page principale une autre page contenant du code html et du php initialement rédiger par moi même en dur via un logiciel d'édition de fichier. J'envisage par la suite d'utiliser des script pouvant modifier ces fichiers mais dans ce cas là, ces scripts veilleront à ce que les parties de code php soit sécurisé.

La raison pour laquelle je n'utilise pas la fonction include est que je désire modifier dynamiquement (enlever certaine balise etc.) le contenu du fichier avant son exécution.

voici un exemple simplifier:
index.php
<html><head>...</head>
<body>
<?php
$file_name = 'mon_contenu.php'; //Nom du fichier contenant l'html et le php da ma page
$file_contents = file_get_contents($file_name);
$file_contents = modif_page($file_contents);//Je modifie le contenu de ma page (je retire toute les balises langues et leurs contenus ne correspondant pas à la langue demandé par l'utilisateur et supprime les balises langues de l'utilisateur en gardant leurs contenus
eval( '?> '.$file_contents.' <?php ' );
?></body></html>
mon_contenu.php
<div id="corps>
<fr>Salut</fr>
<en>Hello</en>
<?php
//recup dans une base, traitement des données et affichage de celle ci
?>
</div>
Que pensez vous du système point de vue sécurité ? (autre point de vue également accepté)
Pensez vous à un autre moyen de faire la même chose ?

merci de votre attention
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

ViPHP
ViPHP | 5462 Messages

28 août 2010, 01:12

dans ce cas il faut utilise le buffer ob_start + include

Mammouth du PHP | 1967 Messages

28 août 2010, 23:58

Merci, c'est exactement ce que je cherchais et j'ignorais que cela existait.

Petite question additionnel
Dans quelles cas utilise t on eval() à bon escient ? Dans la plupart des exemples de la littérature, on dit :
Imaginons que, pour une raison obscure, il décide pour se faire d'utiliser le fonction eval.
. C'est très bien pour expliquer le fonctionnement, mais je comprends quand l'utiliser ?
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube