Zend_View-Migration.xml 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- Reviewed: no -->
  3. <sect1 id="zend.view.migration">
  4. <title>Migration depuis les versions précédentes</title>
  5. <para>
  6. Ce chapitre explique les cassures de compatibilités dans
  7. Zend_View, et devrait servir de guide de migration pour ce composant.
  8. </para>
  9. <sect2 id="zend.view.migration.zf5748">
  10. <title>Migrer depuis des versions inférieures à 1.7.5</title>
  11. <para>
  12. Avant la version 1.7.5, l'équipe de Zend Framework a été avertie d'une faille
  13. potencielle d'inclusion de fichier local ("Local File Inclusion" (LFI)) dans la méthode
  14. <classname>Zend_View::render()</classname>. Avant 1.7.5, la méthode acceptait par défaut
  15. la possibilité de spécifier des scripts de vue comportant des indications de dossier
  16. parent (comme, "../" ou "..\"). Ceci ouvre la possibilité à une attaque LFI si des données
  17. utilisateurs non filtrées sont passées directement à la méthode <code>render()</code>:
  18. </para>
  19. <programlisting role="php"><![CDATA[
  20. // Ici, $_GET['foobar'] = '../../../../etc/passwd'
  21. echo $view->render($_GET['foobar']); // inclusion LFI
  22. ]]></programlisting>
  23. <para>
  24. <classname>Zend_View</classname> emet maintenant une exception dans un tel cas.
  25. </para>
  26. <sect3 id="zend.view.migration.zf5748.disabling">
  27. <title>Désactiver la protection LFI de render()</title>
  28. <para>
  29. Comme des développeurs utilisaient de telles notations, mais qui n'étaient
  30. <emphasis>pas</emphasis> des données en provenance de l'extérieur, un drapeau
  31. spécial a été crée, il permet de désactiver la protection. Pour manipuler ce
  32. drapeau, il existe 2 moyens : le paramètre 'lfiProtectionOn' du constructeur de
  33. votre vue, ou encore la méthode <code>setLfiProtection()</code>.
  34. </para>
  35. <programlisting role="php"><![CDATA[
  36. // Désactivation de la protection par le constructeur
  37. $view = new Zend_View(array('lfiProtectionOn' => false));
  38. // Désactivation de la protection par la méthode dédiée
  39. $view = new Zend_View();
  40. $view->setLfiProtection(false);
  41. ]]></programlisting>
  42. </sect3>
  43. </sect2>
  44. </sect1>
  45. <!--
  46. vim:se ts=4 sw=4 et:
  47. -->