| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 15617 -->
- <!-- Reviewed: no -->
- <sect1 id="zend.view.migration">
- <title>Migration depuis les versions précédentes</title>
- <para>
- Ce chapitre explique les cassures de compatibilités dans Zend_View, et devrait servir
- de guide de migration pour ce composant.
- </para>
- <sect2 id="zend.view.migration.zf5748">
- <title>Migrer depuis des versions inférieures à 1.7.5</title>
- <para>
- Avant la version 1.7.5, l'équipe de Zend Framework a été avertie d'une faille
- potentielle d'inclusion de fichier local ("Local File Inclusion" (LFI)) dans la méthode
- <classname>Zend_View::render()</classname>. Avant 1.7.5, la méthode acceptait par défaut
- la possibilité de spécifier des scripts de vue comportant des indications de dossier
- parent (comme, "../" ou "..\"). Ceci ouvre la possibilité à une attaque LFI si des
- données utilisateurs non filtrées sont passées directement à la méthode
- <code>render()</code>:
- </para>
- <programlisting language="php"><![CDATA[
- // Ici, $_GET['foobar'] = '../../../../etc/passwd'
- echo $view->render($_GET['foobar']); // inclusion LFI
- ]]></programlisting>
- <para>
- <classname>Zend_View</classname> émet maintenant une exception dans un tel
- cas.
- </para>
- <sect3 id="zend.view.migration.zf5748.disabling">
- <title>Désactiver la protection LFI de render()</title>
- <para>
- Comme des développeurs utilisaient de telles notations, mais qui n'étaient
- <emphasis>pas</emphasis> des données en provenance de l'extérieur, un drapeau
- spécial a été crée, il permet de désactiver la protection. Pour manipuler ce
- drapeau, il existe 2 moyens : le paramètre 'lfiProtectionOn' du constructeur de
- votre vue, ou encore la méthode <code>setLfiProtection()</code>.
- </para>
- <programlisting language="php"><![CDATA[
- // Désactivation de la protection par le constructeur
- $view = new Zend_View(array('lfiProtectionOn' => false));
- // Désactivation de la protection par la méthode dédiée
- $view = new Zend_View();
- $view->setLfiProtection(false);
- ]]></programlisting>
- </sect3>
- </sect2>
- </sect1>
|