<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 17172 -->
<!-- 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
            <methodname>Zend_View::render()</methodname>. 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
            <methodname>render()</methodname>:
        </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&#160;: le paramètre 'lfiProtectionOn' du constructeur de
                votre vue, ou encore la méthode <methodname>setLfiProtection()</methodname>.
            </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>
