2
0

Zend_View-Migration.xml 2.4 KB

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