IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Empecher backslash simplexml [Encodage]


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 14
    Points : 16
    Points
    16
    Par défaut Empecher backslash simplexml
    Bonsoir à toutes et à tous,

    Me voila sur un petit problème avec l'utilisation de SimpleXML

    Alors voila, j'ai un site fullflash, qui affiche les données contenu dans des fichiers XML. Mes fichiers XML sont donc appelés directement dans mon animation flash.

    Je suis en trin de développer un backoffice en PHP, qui me permet d'écrire dans mes fichiers XML directement, afin de mettre à jour mon site en flash.
    Jusque la pas de problème, j'arrive à modifier mes documents XML grâce a SimpleXML(mes nœuds XML étant mis entre balises CDATA).

    J'utilise TinyMce pour modifier mes articles, qui sont envoyés en POST et parsés avec SimpleXML.

    Seulement, SimpleXML m'ajoute automatiquement des backslash devant mes caractères simple quote et double quote, ce qui est problématique dans mon cas car les fichiers XML sont réécris comme tel et donc afficher avec les backslash dans mon animation flash.

    Résultat, impossible d'interpréter mes balises HTML (donc mes liens, images et compagnie...).

    J'avoue que c'est une bonne idée d'avoir mis une petite gestion de la sécurité nativement dans SimpleXML avec les backslash pour éviter toute injection... Mais dans le cas présent, il s'agit d'écrire des fichiers XML via un backoffice.

    Je suis bloqué, et j'ai beau chercher, impossible de trouver une solution.

    Quelle solution pourrais-je avoir ?!

    Merci a vous

    Des bizoux\'\' ^^

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Ça ne vient pas de SimpleXML. Vous êtes sûr de ne pas faire un addslashes vous-même et de ne pas avoir la fonctionnalité magic_quotes_gpc active ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 14
    Points : 16
    Points
    16
    Par défaut
    Hello Julp,

    En effet, dans mon php.ini j'ai ces lignes commentées...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ; magic_quotes_gpc
    ;   Default Value: On
    ;   Development Value: Off
    ;   Production Value: Off
    J'enlève la ligne commenté et je mets DEFAULT VALUE: OFF c'est bien ça ?

    Dans le cas ou le problème viendrais de là, est il possible via un htaccess, de modifier cette option chez mon hébergeur qui a lui même probablement les magic_quote_gpc d'activer dans sa configuration PHP ?

    Bien à toi.

    Thib.

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Non : dans l'extrait du php.ini que vous donnez ce ne sont que des commentaires (lignes commençant par un ;) indiquant les valeurs recommandées suivant l'environnement. Il faut chercher cette valeur plus loin mais vous pouvez aussi, plutôt, déjà consulter la sortie d'un phpinfo pour obtenir cette information.

    Citation Envoyé par Thibow59 Voir le message
    Dans le cas ou le problème viendrais de là, est il possible via un htaccess, je modifier cette option chez mon hébergeur qui a lui même probablement les magic_quote_gpc d'activer dans sa configuration PHP ?
    Peut être : ça dépend comment PHP fonctionne (module vs CGI) et ce que vous permet, ou non, de faire votre hébergeur. Généralement, ils mettent une FAQ ou autre document à votre disposition pour vous le dire (en plus du support). Bien qu'il soit aussi possible de tenter de deviner à partir des informations du phpinfo.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 14
    Points : 16
    Points
    16
    Par défaut
    Re,

    Après vérification de mon fichier php.ini, je constate :

    Douche froide :/

    Mon hébergeur étant OVH, on peut belle et bien modifier le paramètre des magic_quotes_gpc a ON ou OFF de cette façon:

    Le problème viens donc forcément d'ailleurs :/

    J'expose:

    Mon fichier XML

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?xml version="1.0" encoding="utf-8"?>
    <scrollbar>    
     
    <text><![CDATA[Du texte, du html <br /> <u></u> <a href="http://site.com">un lien</a> etc...]]>
    </text>
     
    </scrollbar>
    Mon fichier de modif:

    Je récupère les données XML de mon fichier dans un textarea bidon:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    $lecture = simplexml_load_file('text.xml');
    $modifText = $lecture->text;
     
    echo '<form action=modifXml.php method="POST">';
    echo '<textarea style="width:400px; height:400px;" name="modifText">'.$modifText.'</textarea>';
    echo '<input type="submit" name="modifier" value="Modifier le document XML...">';
    echo '</form>';
    ?>
    Je modifie ce que je veux... puis après submit de mon textarea:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    if (isset($_POST['modifier'])){
    $lecture = simplexml_load_file('text.xml');
    $lecture->text = $_POST['modifText'];
    $maj = $lecture->asXML();
    $fichier = fopen("text.xml", "w");
    fputs($fichier, $maj);
    echo "<script>alert('Fichier XML mis à jour !')</script>";
    } 
    ?>
    Et la ... le fameux drame.

    Mais qu'est ce qui se passe hmm

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Ni de SimpleXML, l'échappement n'ayant strictement aucun sens pour du XML (conversion en entités). Ca ressemble plus à un addslashes qu'à autre chose ...

    Si vous contrôlez $_POST['modifText']; avant intégration, qu'obtenez-vous ? Dans quels environnements l'échappement a-t-il lieu (local et/ou "production") ? Que dit un phpinfo ? (une erreur de php.ini ou une redéfinition locale - .htaccess/.user.ini - de ce paramètre pouvant toujours avoir lieu)

    Notes :
    • La nature CDATA est perdue avec SimpleXML à l'écriture
    • L'intégration de données d'un CDATA, tel quel, peut induire des effets de bord
    • La méthode asXML permet aussi d'écrire dans un fichier :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      $lecture = simplexml_load_file('text.xml');
      $lecture->text = $_POST['modifText'];
      $maj = $lecture->asXML();
      $fichier = fopen("text.xml", "w");
      fputs($fichier, $maj);
      Peut être simplifié en :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      $lecture = simplexml_load_file('text.xml');
      $lecture->text = $_POST['modifText'];
      $lecture->asXML('test.xml');

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 14
    Points : 16
    Points
    16
    Par défaut
    Hello !

    Bon finalement tu avais raison, j'ai bafouillé entre mes environnements de dev... Finalement, c'est bien ce dont tu parlais, magic_quotes_gpc ... :/

    Merci encore

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment empecher le Alt + F2 ??
    Par phoenix007 dans le forum Access
    Réponses: 12
    Dernier message: 25/08/2006, 08h52
  2. empecher la visualisation du code source
    Par Teo dans le forum ASP
    Réponses: 7
    Dernier message: 24/10/2003, 14h11
  3. [JBuilder9][JSP] Comment empêcher la recompilation
    Par lamimolette75 dans le forum JBuilder
    Réponses: 2
    Dernier message: 11/07/2003, 15h20
  4. Empecher les erreurs du débogeurs
    Par remixtech dans le forum EDI
    Réponses: 9
    Dernier message: 04/06/2003, 13h45
  5. Empecher le curseur de sortir du dialog
    Par Gadjo dans le forum MFC
    Réponses: 5
    Dernier message: 18/11/2002, 18h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo