<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Itanea le Blog &#187; zend framework</title>
	<atom:link href="http://www.itanea.com/blog/tag/zend-framework/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.itanea.com/blog</link>
	<description>Techno, Développement, Entreprendre et au-delà !</description>
	<lastBuildDate>Sun, 19 May 2013 17:17:29 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Au coeur de Zend Framework 2</title>
		<link>http://www.itanea.com/blog/2012/11/20/au-coeur-de-zend-framework-2/</link>
		<comments>http://www.itanea.com/blog/2012/11/20/au-coeur-de-zend-framework-2/#comments</comments>
		<pubDate>Tue, 20 Nov 2012 20:15:51 +0000</pubDate>
		<dc:creator>Fred Blanc</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[zend]]></category>
		<category><![CDATA[zend framework]]></category>
		<category><![CDATA[blanchon]]></category>
		<category><![CDATA[livre]]></category>
		<category><![CDATA[zend framework 2]]></category>

		<guid isPermaLink="false">http://www.itanea.com/blog/?p=1322</guid>
		<description><![CDATA[Vincent Blanchon est un collègue de travail. Nous avons eu l&#8217;occasion à plusieurs reprises de papoter Zend Framework 2. C&#8217;est donc tout naturellement quand il m&#8217;a parlé de son projet de livre il y a quelques mois que je lui ai proposé d&#8217;en faire la relecture. Et quelques semaines plus tard, j&#8217;avais le privilège d&#8217;être [...]<div class="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://www.itanea.com/blog/2011/08/19/zend-framework-2-enfin-un-peu-de-communication/"     class="crp_title">Zend Framework 2, enfin un peu de communication !</a></li><li><a href="http://www.itanea.com/blog/2011/11/16/le-zend-framework-2-setoffe-et-met-en-place-un-market-place-pour-ses-modules/"     class="crp_title">Le Zend Framework 2 s&rsquo;étoffe et met en place un&hellip;</a></li><li><a href="http://www.itanea.com/blog/2010/11/11/introduction-au-plugin-broker-du-zend-framework-2/"     class="crp_title">Introduction au plugin Broker du Zend Framework 2</a></li><li><a href="http://www.itanea.com/blog/2010/10/05/zf%c2%b2-la-zend-framework-faq/"     class="crp_title">ZF² : la Zend Framework FAQ</a></li><li><a href="http://www.itanea.com/blog/2010/10/05/quel-tarif-appliquer-a-la-journee-en-tant-que-developpeur-zend-framework-independant-autoentrepreneur/"     class="crp_title">Quel tarif appliquer à la journée en tant que développeur</a></li><li>Powered by <a href="http://ajaydsouza.com/wordpress/plugins/contextual-related-posts/" rel="nofollow">Contextual Related Posts</a></li></ul></div>]]></description>
				<content:encoded><![CDATA[<p>Vincent Blanchon est un collègue de travail. Nous avons eu l&rsquo;occasion à plusieurs reprises de papoter <strong>Zend Framework 2</strong>. C&rsquo;est donc tout naturellement quand il m&rsquo;a parlé de son projet de livre il y a quelques mois que je lui ai proposé d&rsquo;en faire la relecture.<br />
Et quelques semaines plus tard, j&rsquo;avais le privilège d&rsquo;être l&rsquo;heureux détenteur de la première maquette du livre.<br />
Je me suis donc attelé à la relecture. Pour l&rsquo;essentiel il s&rsquo;agissait de correction de coquilles, car pour ce qui est de la technique Vincent en connait sans doute bien plus que moi sur les entrailles du ZF2 pour avoir contribué au code source. Vous êtes donc entre de bonnes mains.</p>
<p>Ainsi si vous souhaitez bien commencer avec le ZF2, hormis la doc officielle et le tutoriel de Rob Allen, je vous recommande plus que chaudement la lecture du livre de Vincent.</p>
<p>Vous pourrez le trouver sur le site dédié : http://au-coeur-de-zend-framework-2.fr/</p>
<p>Bonne lecture et bon ZFProgramming <img src='http://www.itanea.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<div class="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://www.itanea.com/blog/2011/08/19/zend-framework-2-enfin-un-peu-de-communication/"     class="crp_title">Zend Framework 2, enfin un peu de communication !</a></li><li><a href="http://www.itanea.com/blog/2011/11/16/le-zend-framework-2-setoffe-et-met-en-place-un-market-place-pour-ses-modules/"     class="crp_title">Le Zend Framework 2 s&rsquo;étoffe et met en place un&hellip;</a></li><li><a href="http://www.itanea.com/blog/2010/11/11/introduction-au-plugin-broker-du-zend-framework-2/"     class="crp_title">Introduction au plugin Broker du Zend Framework 2</a></li><li><a href="http://www.itanea.com/blog/2010/10/05/zf%c2%b2-la-zend-framework-faq/"     class="crp_title">ZF² : la Zend Framework FAQ</a></li><li><a href="http://www.itanea.com/blog/2010/10/05/quel-tarif-appliquer-a-la-journee-en-tant-que-developpeur-zend-framework-independant-autoentrepreneur/"     class="crp_title">Quel tarif appliquer à la journée en tant que développeur</a></li><li>Powered by <a href="http://ajaydsouza.com/wordpress/plugins/contextual-related-posts/" rel="nofollow">Contextual Related Posts</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.itanea.com/blog/2012/11/20/au-coeur-de-zend-framework-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Le Zend Framework 2 s&#8217;étoffe et met en place un market place pour ses modules</title>
		<link>http://www.itanea.com/blog/2011/11/16/le-zend-framework-2-setoffe-et-met-en-place-un-market-place-pour-ses-modules/</link>
		<comments>http://www.itanea.com/blog/2011/11/16/le-zend-framework-2-setoffe-et-met-en-place-un-market-place-pour-ses-modules/#comments</comments>
		<pubDate>Wed, 16 Nov 2011 12:38:50 +0000</pubDate>
		<dc:creator>Fred Blanc</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[zend framework]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[marketplace]]></category>
		<category><![CDATA[module]]></category>
		<category><![CDATA[symfony]]></category>
		<category><![CDATA[zend framework 2]]></category>

		<guid isPermaLink="false">http://www.itanea.com/blog/2011/11/16/le-zend-framework-2-setoffe-et-met-en-place-un-market-place-pour-ses-modules/</guid>
		<description><![CDATA[Via Scoop.it &#8211; La veille du WebDeveloper Le Zend Framework 2 prend la même route que Symfony en mettant en place un market place (http://modules.zendframework.com/) pour proposer à la communauté un point central pour récupérer tous les modules nécessaires à votre projet. Pour le moment, le market place comme le Zend Framework 2 d&#8217;ailleurs sont [...]<div class="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://www.itanea.com/blog/2011/08/19/zend-framework-2-enfin-un-peu-de-communication/"     class="crp_title">Zend Framework 2, enfin un peu de communication !</a></li><li><a href="http://www.itanea.com/blog/2010/11/11/introduction-au-plugin-broker-du-zend-framework-2/"     class="crp_title">Introduction au plugin Broker du Zend Framework 2</a></li><li><a href="http://www.itanea.com/blog/2011/11/15/drupal-integre-pour-son-moteur-interne-le-framework-symfony/"     class="crp_title">Drupal intègre pour son moteur interne le framework Symfony</a></li><li><a href="http://www.itanea.com/blog/2011/11/16/introduction-a-l%e2%80%99html5-html5-css3-fr/"     class="crp_title">Introduction à l’HTML5 | HTML5-CSS3.fr</a></li><li><a href="http://www.itanea.com/blog/2011/11/21/handling-sql-errors-in-pdo-lornajane/"     class="crp_title">Handling SQL Errors in PDO | LornaJane</a></li><li>Powered by <a href="http://ajaydsouza.com/wordpress/plugins/contextual-related-posts/" rel="nofollow">Contextual Related Posts</a></li></ul></div>]]></description>
				<content:encoded><![CDATA[<p>Via <a style="font-weight: bold; font-size: 18px;" href="http://www.scoop.it/t/la-veille-du-web-developer/p/680778403/le-zend-framework-2-s-etoffe-et-met-en-place-un-market-place-pour-ses-modules">Scoop.it</a> &#8211; <a href="http://www.scoop.it/t/la-veille-du-web-developer">La veille du WebDeveloper</a><br />
<img src="http://img.scoop.it/cqInlUo1A5pi0LIclw4gxDl72eJkfbmt4t8yenImKBXEejxNn4ZJNZ2ss5Ku7Cxt" alt="Un market place pour les modules Zend Framework" width="300" height="257" /><br />
Le <strong>Zend Framework 2</strong> prend la même route que <strong>Symfony</strong> en mettant en place un <strong>market place</strong> (<a title="Le market place pour les modules Zend Framework 2" href="http://modules.zendframework.com/" target="_blank">http://modules.zendframework.com/</a>) pour proposer à la communauté un point central pour récupérer tous les <strong>modules</strong> nécessaires à votre projet.</p>
<p>Pour le moment, le <strong>market place</strong> comme le <strong>Zend Framework 2</strong> d&rsquo;ailleurs sont en phase <strong>Béta</strong> et ne sont donc pas à utiliser en production.</p>
<p>L&rsquo;initiative est intéressante et prouve que le Zend Framework n&rsquo;est pas mort et s&rsquo;apprête à rentrer dans l&rsquo;arène pour se mesure à Symfony 2.   Ce sera sans doute un combat intéressant à suivre en 2012 !</p>
<div class="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://www.itanea.com/blog/2011/08/19/zend-framework-2-enfin-un-peu-de-communication/"     class="crp_title">Zend Framework 2, enfin un peu de communication !</a></li><li><a href="http://www.itanea.com/blog/2010/11/11/introduction-au-plugin-broker-du-zend-framework-2/"     class="crp_title">Introduction au plugin Broker du Zend Framework 2</a></li><li><a href="http://www.itanea.com/blog/2011/11/15/drupal-integre-pour-son-moteur-interne-le-framework-symfony/"     class="crp_title">Drupal intègre pour son moteur interne le framework Symfony</a></li><li><a href="http://www.itanea.com/blog/2011/11/16/introduction-a-l%e2%80%99html5-html5-css3-fr/"     class="crp_title">Introduction à l’HTML5 | HTML5-CSS3.fr</a></li><li><a href="http://www.itanea.com/blog/2011/11/21/handling-sql-errors-in-pdo-lornajane/"     class="crp_title">Handling SQL Errors in PDO | LornaJane</a></li><li>Powered by <a href="http://ajaydsouza.com/wordpress/plugins/contextual-related-posts/" rel="nofollow">Contextual Related Posts</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.itanea.com/blog/2011/11/16/le-zend-framework-2-setoffe-et-met-en-place-un-market-place-pour-ses-modules/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Le nouveau site de l&#8217;agence web Itanea est prêt pour la rentrée, venez découvrir nos offres</title>
		<link>http://www.itanea.com/blog/2011/08/31/le-nouveau-site-de-l-agence-web-itanea-est-pret-pour-la-rentree-venez-decouvrir-nos-offres/</link>
		<comments>http://www.itanea.com/blog/2011/08/31/le-nouveau-site-de-l-agence-web-itanea-est-pret-pour-la-rentree-venez-decouvrir-nos-offres/#comments</comments>
		<pubDate>Wed, 31 Aug 2011 16:07:54 +0000</pubDate>
		<dc:creator>Fred Blanc</dc:creator>
				<category><![CDATA[itanea]]></category>
		<category><![CDATA[agence web]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[ecommerce]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[symfony]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[zend framework]]></category>

		<guid isPermaLink="false">http://www.itanea.com/blog/?p=879</guid>
		<description><![CDATA[Voilà, la rentrée est déjà là et le nouveau site d&#8217;itanea également. Venez le découvrir, ainsi que nos offres et réalisations. Nous sommes à votre disposition pour tout vos projets de site internet : blog site vitrine site institutionnel ecommerce crm erp forums &#8230; Bonne rentrée à toutes et à tous !<div class="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://www.itanea.com/blog/2011/08/30/wordpress-faille-de-securite-xss-sur-wordpress-3-1-et-3-2-1/"     class="crp_title">[WordPress] Faille de sécurité XSS sur WordPress 3.1 et&hellip;</a></li><li><a href="http://www.itanea.com/blog/2011/08/23/migrer-son-site-wordpress-dun-sous-domaine-au-domaine-principal/"     class="crp_title">Migrer son site wordpress d&rsquo;un sous domaine au domaine</a></li><li><a href="http://www.itanea.com/blog/2012/02/06/precurio-en-ce-moment-le-site-de-demo-ne-fait-pas-tres-serieux/"     class="crp_title">Precurio &#8211; En ce moment le site de démo ne fait pas&hellip;</a></li><li><a href="http://www.itanea.com/blog/2011/09/05/trouver-et-integrer-facilement-de-nouvelles-polices-de-caracteres-a-votre-site-internet/"     class="crp_title">Trouver et intégrer facilement de nouvelles polices de&hellip;</a></li><li><a href="http://www.itanea.com/blog/2011/06/04/thebuggenie-appliquer-des-permissions-en-lecture-sur-le-wiki/"     class="crp_title">TheBugGenie : appliquer des permissions en lecture sur le&hellip;</a></li><li>Powered by <a href="http://ajaydsouza.com/wordpress/plugins/contextual-related-posts/" rel="nofollow">Contextual Related Posts</a></li></ul></div>]]></description>
				<content:encoded><![CDATA[<p>Voilà, la rentrée est déjà là et le <a title="Découvrez le nouveau site de l'agence web Itanea" href="http://bit.ly/hJQGcF" target="_blank">nouveau site d&rsquo;itanea également</a>. Venez le découvrir, ainsi que nos offres et réalisations. Nous sommes à votre disposition pour tout vos projets de site internet :</p>
<ul>
<li>blog</li>
<li>site vitrine</li>
<li>site institutionnel</li>
<li>ecommerce</li>
<li>crm</li>
<li>erp</li>
<li>forums</li>
<li>&#8230;</li>
</ul>
<p>Bonne rentrée à toutes et à tous !</p>
<div class="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://www.itanea.com/blog/2011/08/30/wordpress-faille-de-securite-xss-sur-wordpress-3-1-et-3-2-1/"     class="crp_title">[WordPress] Faille de sécurité XSS sur WordPress 3.1 et&hellip;</a></li><li><a href="http://www.itanea.com/blog/2011/08/23/migrer-son-site-wordpress-dun-sous-domaine-au-domaine-principal/"     class="crp_title">Migrer son site wordpress d&rsquo;un sous domaine au domaine</a></li><li><a href="http://www.itanea.com/blog/2012/02/06/precurio-en-ce-moment-le-site-de-demo-ne-fait-pas-tres-serieux/"     class="crp_title">Precurio &#8211; En ce moment le site de démo ne fait pas&hellip;</a></li><li><a href="http://www.itanea.com/blog/2011/09/05/trouver-et-integrer-facilement-de-nouvelles-polices-de-caracteres-a-votre-site-internet/"     class="crp_title">Trouver et intégrer facilement de nouvelles polices de&hellip;</a></li><li><a href="http://www.itanea.com/blog/2011/06/04/thebuggenie-appliquer-des-permissions-en-lecture-sur-le-wiki/"     class="crp_title">TheBugGenie : appliquer des permissions en lecture sur le&hellip;</a></li><li>Powered by <a href="http://ajaydsouza.com/wordpress/plugins/contextual-related-posts/" rel="nofollow">Contextual Related Posts</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.itanea.com/blog/2011/08/31/le-nouveau-site-de-l-agence-web-itanea-est-pret-pour-la-rentree-venez-decouvrir-nos-offres/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zend Framework 2, enfin un peu de communication !</title>
		<link>http://www.itanea.com/blog/2011/08/19/zend-framework-2-enfin-un-peu-de-communication/</link>
		<comments>http://www.itanea.com/blog/2011/08/19/zend-framework-2-enfin-un-peu-de-communication/#comments</comments>
		<pubDate>Fri, 19 Aug 2011 17:15:19 +0000</pubDate>
		<dc:creator>Fred Blanc</dc:creator>
				<category><![CDATA[actualités]]></category>
		<category><![CDATA[Non classé]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[symfony]]></category>
		<category><![CDATA[zend framework]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[communication]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[zend]]></category>

		<guid isPermaLink="false">http://www.itanea.com/blog/?p=861</guid>
		<description><![CDATA[C&#8217;est sur que lorsque l&#8217;on compare la communication autour de Symfony 2 et celle autour du Zend Framework 2, on est en droit de se demander si tout va bien pour le le framework Made In Zend. Le Zend Framework 2 on en a parlé à la PHP CONF la cité des sciences en novembre [...]<div class="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://www.itanea.com/blog/2011/11/16/le-zend-framework-2-setoffe-et-met-en-place-un-market-place-pour-ses-modules/"     class="crp_title">Le Zend Framework 2 s&rsquo;étoffe et met en place un&hellip;</a></li><li><a href="http://www.itanea.com/blog/2010/11/11/introduction-au-plugin-broker-du-zend-framework-2/"     class="crp_title">Introduction au plugin Broker du Zend Framework 2</a></li><li><a href="http://www.itanea.com/blog/2012/11/20/au-coeur-de-zend-framework-2/"     class="crp_title">Au coeur de Zend Framework 2</a></li><li><a href="http://www.itanea.com/blog/2010/10/05/zf%c2%b2-la-zend-framework-faq/"     class="crp_title">ZF² : la Zend Framework FAQ</a></li><li><a href="http://www.itanea.com/blog/2012/02/22/php5-4-la-rc8-est-passee-la-rc9-pour-bientot/"     class="crp_title">PHP5.4 la RC8 est passée, la RC9 pour bientôt !</a></li><li>Powered by <a href="http://ajaydsouza.com/wordpress/plugins/contextual-related-posts/" rel="nofollow">Contextual Related Posts</a></li></ul></div>]]></description>
				<content:encoded><![CDATA[<p>C&rsquo;est sur que lorsque l&rsquo;on compare la <strong>communication</strong> autour de <strong>Symfony 2</strong> et celle autour du <strong>Zend Framework 2</strong>, on est en droit de se demander si tout va bien pour le le framework Made In Zend.</p>
<p>Le<strong> Zend Framework 2</strong> on en a parlé à la <strong>PHP CONF</strong> la cité des sciences en novembre 2010, puis depuis, je n&rsquo;en ai plus trop entendu parlé. Il y a bien quelques articles ou news de ci, de là, mais rien d&rsquo;aussi concret que ce l&rsquo;on a eu avec <strong>Symfony</strong>. Symfony est arrivé en retard certes mais avec de bons arguments.</p>
<p>Alors peut être que le Zend Framework 2 a aussi des raisons d&rsquo;arriver plus tard que prévu, mais le moins que l&rsquo;on puisse dire c&rsquo;est qu&rsquo;il n&rsquo;y a pas beaucoup de communication autour pour nous rassurer. Du coup, j&rsquo;ai déjà lu sur certains forums que plusieurs d&rsquo;entre nous envisageaient tout bonnement de passer leurs compétences et passion pour <strong>PHP</strong> vers <strong>Symfony</strong>.</p>
<p>Que penser de tout cela ?</p>
<p>Sans doute une simple erreur de <strong>stratégie de communication de Zend</strong> qui tente d&rsquo;ailleurs de se rattraper par la mise en place d&rsquo;un <strong>blog</strong> sur le développement du <strong>Zend Framework 2</strong>. Vous pourrez le trouver à l&rsquo;adresse suivante : http://framework.zend.com/zf2/blog</p>
<p>Vous pouvez également y trouver entre autres une page sur le <strong>status des développements</strong> en cours (http://framework.zend.com/wiki/display/ZFDEV2/Development+Status+Page).</p>
<p>Espérons que ce <strong>blog</strong> va s&rsquo;enrichir d&rsquo;informations et de news croustillantes afin de mettre en émoi nos papilles sensibles de développeurs <img src='http://www.itanea.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<div class="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://www.itanea.com/blog/2011/11/16/le-zend-framework-2-setoffe-et-met-en-place-un-market-place-pour-ses-modules/"     class="crp_title">Le Zend Framework 2 s&rsquo;étoffe et met en place un&hellip;</a></li><li><a href="http://www.itanea.com/blog/2010/11/11/introduction-au-plugin-broker-du-zend-framework-2/"     class="crp_title">Introduction au plugin Broker du Zend Framework 2</a></li><li><a href="http://www.itanea.com/blog/2012/11/20/au-coeur-de-zend-framework-2/"     class="crp_title">Au coeur de Zend Framework 2</a></li><li><a href="http://www.itanea.com/blog/2010/10/05/zf%c2%b2-la-zend-framework-faq/"     class="crp_title">ZF² : la Zend Framework FAQ</a></li><li><a href="http://www.itanea.com/blog/2012/02/22/php5-4-la-rc8-est-passee-la-rc9-pour-bientot/"     class="crp_title">PHP5.4 la RC8 est passée, la RC9 pour bientôt !</a></li><li>Powered by <a href="http://ajaydsouza.com/wordpress/plugins/contextual-related-posts/" rel="nofollow">Contextual Related Posts</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.itanea.com/blog/2011/08/19/zend-framework-2-enfin-un-peu-de-communication/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Comment éviter le vol d&#8217;identité dans vos applications Zend Framework avec le composant Zend_Auth</title>
		<link>http://www.itanea.com/blog/2011/01/20/comment-eviter-le-vol-d-identite-dans-vos-applications-zend-framework-avec-le-composant-zend-auth/</link>
		<comments>http://www.itanea.com/blog/2011/01/20/comment-eviter-le-vol-d-identite-dans-vos-applications-zend-framework-avec-le-composant-zend-auth/#comments</comments>
		<pubDate>Thu, 20 Jan 2011 12:17:56 +0000</pubDate>
		<dc:creator>Fred Blanc</dc:creator>
				<category><![CDATA[actualités]]></category>
		<category><![CDATA[Non classé]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[sécurité]]></category>
		<category><![CDATA[tutoriels]]></category>
		<category><![CDATA[zend framework]]></category>
		<category><![CDATA[authentification]]></category>
		<category><![CDATA[connexion]]></category>
		<category><![CDATA[cookie de session]]></category>
		<category><![CDATA[faille de sécurité]]></category>
		<category><![CDATA[front controller]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[login]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[phpsessid]]></category>
		<category><![CDATA[piratage]]></category>
		<category><![CDATA[predispatch]]></category>
		<category><![CDATA[singleton]]></category>
		<category><![CDATA[user agent]]></category>
		<category><![CDATA[vol d'identité]]></category>
		<category><![CDATA[Zend_Auth]]></category>

		<guid isPermaLink="false">http://www.itanea.com/blog/?p=693</guid>
		<description><![CDATA[Introduction : Le tutoriel suivant va vous montrer comment augmenter l'ensemble de la sécurité de votre application PHP (ce tutoriel est basé sur le Zend Framework 1.10 et sur l'utilisation de Zend_Auth mais vous pouvez facilement l'adapter à vos propres besoins). Vous allez apprendre comment étendre la classe Zend_Auth en une classe d'authentification hautement sécurisée et adaptable.<div class="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://www.itanea.com/blog/2011/08/19/zend-framework-2-enfin-un-peu-de-communication/"     class="crp_title">Zend Framework 2, enfin un peu de communication !</a></li><li><a href="http://www.itanea.com/blog/2010/11/18/comment-faire-tourner-les-tests-selenium-avec-des-authentification-http-basiques-sous-firefox-et-internet-explorer/"     class="crp_title">Comment faire tourner les tests Selenium avec des&hellip;</a></li><li><a href="http://www.itanea.com/blog/2011/08/30/wordpress-faille-de-securite-xss-sur-wordpress-3-1-et-3-2-1/"     class="crp_title">[WordPress] Faille de sécurité XSS sur WordPress 3.1 et&hellip;</a></li><li><a href="http://www.itanea.com/blog/2011/06/12/installation-precurio-could-not-determine-temp-directory-please-specify-a-cache_dir-manually/"     class="crp_title">Installation de Precurio : Could not determine temp&hellip;</a></li><li><a href="http://www.itanea.com/blog/2010/11/11/introduction-au-plugin-broker-du-zend-framework-2/"     class="crp_title">Introduction au plugin Broker du Zend Framework 2</a></li><li>Powered by <a href="http://ajaydsouza.com/wordpress/plugins/contextual-related-posts/" rel="nofollow">Contextual Related Posts</a></li></ul></div>]]></description>
				<content:encoded><![CDATA[<p><img class="aligncenter size-medium wp-image-772" title="Piratage" src="http://www.itanea.com/blog/wp-content/uploads/744px-Pirate_Flag_of_Rack_Rackham.svg_-300x200.png" alt="Sécurisé les applications Zend Framework avec Zend_Auth" width="300" height="200" /></p>
<p><span style="color: #ff6600;"><em>Note du traducteur : Cet article est une traduction de l&rsquo;article <a title="Permanent Link to How to avoid Identity Theft in Zend Framework with Zend Auth" rel="bookmark" href="http://phpdev.ro/how-to-avoid-identity-theft-in-zend-framework-with-zend-auth.html">How to avoid Identity Theft in Zend Framework with Zend Auth</a> paru le 04 mars 2010 sur <a title="PHP Tutorials" href="http://phpdev.ro/category/php_tutorials" target="_blank">PHP Tutorials</a>, écrit par <a title="Andrei Gabreanu" href="http://phpdev.ro/author/admin/" target="_blank">Andrei Gabreanu</a>. Je le remercie au passage de m&rsquo;avoir autorisé à effectuer cette traduction et à la publier sur mon blog.</em></span></p>
<p><span style="color: #ff6600;"><em>Si vous constatez des typos ou des erreurs de traduction merci de m&rsquo;en faire part.<br />
</em></span></p>
<p><em><strong>Introduction :</strong> Le tutoriel suivant va vous montrer comment augmenter l&rsquo;ensemble de la <strong>sécurité </strong>de votre application <strong>PHP </strong>(ce tutoriel est basé sur le <strong>Zend Framework 1.10</strong> et sur l&rsquo;utilisation de <strong>Zend_Auth</strong> mais vous pouvez facilement l&rsquo;adapter à vos propres besoins). Vous allez apprendre comment étendre la classe <strong>Zend_Auth</strong> en une classe d&rsquo;<strong>authentification</strong> hautement <strong>sécurisée </strong>et adaptable.</em></p>
<p>Lorsque je construis mes applications, j&rsquo;essaye toujours d&rsquo;améliorer le code que j&rsquo;écris de multiple manières. Aujourd&rsquo;hui, j&rsquo;ai pensé à des <strong>failles de sécurité</strong> de n&rsquo;importe quelle application PHP utilisant un système d&rsquo;authentification.</p>
<h1>Les failles de sécurité des applications Web</h1>
<p>Les principales <strong>questions de sécurité</strong> au sein d&rsquo;<strong>applications web</strong> sont les suivantes :</p>
<ul>
<li>Cross-site scripting (voir <a title="Wikipedia : définition de l'attaque de type Cross-Site scripting" href="http://fr.wikipedia.org/wiki/Cross-site_scripting" target="_blank">Wikipedia &#8211; Cross-Site Scripting</a>)</li>
<li>Paramètres invalides</li>
<li>Faille dans le contrôle d&rsquo;accès</li>
<li>Problème de gestion des erreurs</li>
<li>Usage non sécurisé de la cryptographie</li>
<li>mauvaise configuration dans le serveur web et applicatif</li>
<li>compte cassé et gestion de session</li>
</ul>
<p>Même si ce sont tous des problèmes majeurs, il y en a un en particulier qui m&rsquo;agace depuis un certain temps. Le <strong>vol d&rsquo;identité</strong> &#8211; compte cassé et problème de gestion de session.</p>
<p>Pourquoi peut-on si facilement conserver mon identifiant de <strong>cookie de session</strong> et tout à coup avoir accès à mon compte dans une application web en particulier ? Je sais qu&rsquo;il est quasiment impossible d&rsquo;être 100% protégé aux tentatives de<strong> piratage</strong> (<strong>hack</strong>) mais je suis persuadé que le système devrait être amélioré autant que possible.</p>
<p>Dans les quelques lignes suivantes, je vais vous montrer comment vous pouvez faire cela.</p>
<h1>Notre but</h1>
<p>Notre objectif est de mettre en œuvre une extension<strong> Zend_Auth</strong> qui ajoute un nouveau niveau de sécurité à cette classe.</p>
<p>Cette extension &#8211; que nous appellerons Project_Application_Auth &#8211; vérifiera le stockage <strong>Zend_Auth</strong> pour les propriétés <strong>IP</strong> et/ou du <strong>User Agent</strong>.</p>
<p>Pour ce faire, elles doivent être stockées lors du processus de connexion.</p>
<p>Si l&rsquo;<strong>IP</strong> est différente de celle fournie lors de la phase de<strong> login</strong> et/ou si le <strong>User Agent</strong> de l&rsquo;utilisateur est différent de celui mis en cache lors de la phase, notre extension nous avertira que ce n&rsquo;est pas une identité sécurisée (comprendre : il est recommandé de supposer qu&rsquo;il a été volé) et nous devrions donc déconnecter l&rsquo;utilisateur.</p>
<h1>Les raisons d&rsquo;utiliser ces méthodes</h1>
<p>Je suis venu à cette idée depuis que je me suis demandé :  Existe t-il vraiment un cas où je pourrai me retrouver avec le même ID de session, mais avec une IP différente ou un autre navigateur?</p>
<p>La réponse est :  oui. Il y a une chance avec le premier des deux cas. Si j&rsquo;ai une <strong>IP dynamique</strong>, elle pourrait changer sans que je le sache, ce qui m&rsquo;amènerait à un état non authentifié.</p>
<p>Mais en réalité, cela arrive rarement (même si votre IP change, elle ne changera pas plus d&rsquo;une fois par semaine, non ?).</p>
<p>Vous pourriez vous demander pourquoi l&rsquo;extension que je suis sur le point de vous montrer, vérifie également l&rsquo;adresse IP quand on peut simplement vérifier le User Agent (puisque ce ne peut certainement pas être le même sur une IP différente, car le cookie de session id ne peut exister que dans un seul navigateur, dans aucun autre).</p>
<p><span style="text-decoration: underline;">La réponse :</span> parce que tout pirate qui a volé votre identité pourrait bien utiliser le même navigateur que vous utilisiez et ainsi contourner complètement nos protections.</p>
<p>Et comme dernière raison, <strong>oui</strong>, si le pirate a la même adresse IP que la vôtre, vole votre identité (id de cookie de session) et utilise le même navigateur, alors il contournera le système. Mais bon, nous pouvons au moins rendre cette tâche plus difficile pour lui !</p>
<h1>Le projet Application_Auth_Extension</h1>
<p>La classe suivante doit être placée dans votre <strong>/chemin/vers/le/projet/&#8230;&#8230;/library/Project/Application/Auth.php</strong></p>
<pre>class Project_Application_Auth extends Zend_Auth
{
    /**
     * Singleton instance
     *
     * @var Project_Application_Auth
     */
    protected static $_instance = null;

    /**
     * Defines how much time to wait until
     * to reinitialize the session id
     */
    protected static $_session_exp_time = 5;

    /**
     * Defines if to validate a secure identity
     */
    protected static $_secure = TRUE;

    /**
     * Defines secure identity check level
     *
     * 1 - Check only IP
     * 2 - Check only UserAgent
     * 3 - Check IP &amp; UserAgent
     */
    protected static $_secure_level = 3;

    /**
     * Returns an instance of Project_Application_Auth
     *
     * Singleton pattern implementation
     *
     * @return Project_Application_Auth Provides a fluent interface
     */
    public static function getInstance()
    {
        if (null === self::$_instance) {
            self::$_instance = new self();
        }

        return self::$_instance;
    }

    /**
     * Sets wheter the method @see hasSecureIdentity
     * to work or not. If set to FALSE then this extension will work
     * as the normal Zend_Auth class
     *
     * @param boolean true
     */
    public function setSecure($status = TRUE)
    {
    	if ($status === TRUE)
    	{
    		self::$_secure = TRUE;
    	}

    	if ($status === FALSE)
    	{
    		self::$_secure = FALSE;
    	}

    	return TRUE;
    }

    /**
     * Sets the level of security for the @see hasSecureIdentity method
     *
     * @param integer $level (can be 1 or 2 or 3)
     */
	public function setSecureLevel($level)
    {
    	if (in_array($level, array(1, 2, 3)))
    	{
    		self::$_secure_level = $level;
    	}

    	return TRUE;
    }

    /**
     * Returns true if and only if an identity is not stolen
     *
     * Checks if IP and/or User Agent (@see $_secure_level)
     * match the initial authentication data
     *
     * @return boolean
     */
    public function hasSecureIdentity()
    {
    	if (self::$_secure === FALSE)
    	{
    		return TRUE;
    	}

    	if (FALSE == $this-&gt;getStorage()-&gt;isEmpty())
    	{
	    	$storage = $this-&gt;getStorage()-&gt;read();

	    	if (self::$_secure_level == 3)
	    	{
		    	return $storage-&gt;ip == $_SERVER['REMOTE_ADDR']
		    		&amp;&amp; $storage-&gt;user_agent == $_SERVER['HTTP_USER_AGENT'];
	    	}
	    	elseif (self::$_secure_level == 2)
	    	{
	    		return $storage-&gt;user_agent == $_SERVER['HTTP_USER_AGENT'];
	    	}
	    	elseif (self::$_secure_level == 1)
	    	{
	    		return $storage-&gt;ip == $_SERVER['REMOTE_ADDR'];
	    	}
	    	else
	    	{
	    		return FALSE;
	    	}
    	}
    	else
    	{
    		return FALSE;
    	}
    }

    /**
     * If the Zend Auth Storage
     * has been initialized and is a Session Storage
     * and the last time it has been reinitialized is bigger then
     * the @see $session_exp_time then reinitialize the session id
     *
     * @return boolean
     */
    public function reinitSecurity()
    {
    	if (isset($_SESSION['Zend_Auth']))
    	{
	   		$zend_auth_session_namespace = new Zend_Session_Namespace('Zend_Auth');
			if (!isset($zend_auth_session_namespace-&gt;initialized)
				|| $zend_auth_session_namespace-&gt;initialized + self::$session_exp_time &lt; time() ) {
				Zend_Session::regenerateId();
				$zend_auth_session_namespace-&gt;initialized = time();
			}
    	}

    	return TRUE;
    }
}</pre>
<p>Maintenant, arrêtons-nous une seconde pour comprendre ce que ces inquiétantes lignes de code font :<br />
Tout d&rsquo;abord, l&rsquo;extension implémente le <strong>pattern singleton</strong>. Ensuite, nous avons 3 propriétés:</p>
<p>La première, <strong>$_secure</strong>, nous permet d&rsquo;activer et de désactiver l&rsquo;ensemble de la classe, nous laissant auquel cas avec le système habituel <strong>Zend_Auth</strong>.</p>
<p>La seconde, <strong>$_secure_level</strong>, définit le niveau de vérification : soit juste l&rsquo;<strong>IP</strong>, soit uniquement le <strong>User Agent</strong> ou encore les deux à la fois.</p>
<p>La troisième, définit <strong>$_session_exp_time</strong> défini quand doit être réinitialisé le Zend Auth Session Storage Id (aka PHPSESSID id) si la méthode <strong>reinitSecurity </strong>est appelée.</p>
<h1>Comment utiliser cette classe</h1>
<p>Dans votre contrôleur de base &#8211; que nous appellerons Project_Application_Controller (que chaque contrôleur devraient étendre) &#8211; vous devez avoir le code suivant :</p>
<pre>abstract Class Project_Application_Controller extends Zend_Controller_Action
    /**
     * Initialize the application controller
     */
	public function init()
	{
		parent::init();
		$this-&gt;_initSession();
		debug($_SESSION);
	}

	/**
	 * Inits the User Session
	 * and refresh the session id
	 */
	protected function _initSession()
	{
		Project_Application_Auth::getInstance()-&gt;reinitSecurity();
	}</pre>
<p>Ce principe nous permet simplement d&rsquo;exécuter la méthode <strong>reinitSecurity</strong> à chaque exécution de l&rsquo;application, tout en nous permettant d&rsquo;initialiser entièrement le <strong>Front Controller</strong>.</p>
<p>Maintenant, dans votre méthode<strong> preDispatch ()</strong>, vous pourriez avoir quelque chose comme ceci:</p>
<pre>if ( FALSE === Project_Application_Auth::getInstance()-&gt;hasIdentity() { //do stuff here } else { //other stuff here }</pre>
<p>Cela contrôle simplement si l&rsquo;utilisateur a été authentifié précédemment. Juste en-dessous, ajoutez le code suivant:</p>
<pre>if ( FALSE === Project_Application_Auth::getInstance()-&gt;hasSecureIdentity()
    &amp;&amp; 'users' !== $this-&gt;getRequest()-&gt;getControllerName()
    &amp;&amp; 'login' !== $this-&gt;getRequest()-&gt;getActionName()
    &amp;&amp; 'error' !== $this-&gt;getRequest()-&gt;getControllerName())
{
    Zend_Auth::getInstance()-&gt;clearIdentity();
    // redirect to login page
}</pre>
<p>Je suppose ici que vous avez un contrôleur nommé &lsquo;Users&rsquo; avec une action &lsquo;login&rsquo; (vous pouvez changer ces noms comme vous le souhaitez).</p>
<p>Enfin, dans votre processus de connexion (login), partout où vous exécutez votre méthode <strong>Zend_Auth authenticate()</strong>, ajoutez le code suivant :</p>
<pre>$auth = Project_Application_Auth::getInstance();

$result = $auth-&gt;authenticate($authAdapter);

if ($result-&gt;isValid())
{
    $storage = $authAdapter-&gt;getResultRowObject();
    $storage-&gt;ip = $_SERVER['REMOTE_ADDR'];
    $storage-&gt;user_agent = $_SERVER['HTTP_USER_AGENT'];

    $storage = $auth-&gt;getStorage()-&gt;write($storage);
    return TRUE;
}
else
{
    return FALSE;
}</pre>
<p>Cela va placer votre objet User dans<strong> Zend_Auth storage</strong> associé à son <strong>IP </strong>et son <strong>User Agent</strong>.</p>
<h1>Conclusion</h1>
<p>J&rsquo;espère que vous aimerez cette extension. Je suis vraiment intéressé par vos réflexions sur ce système et vous encourage à laisser vos commentaires ci-dessous. J&rsquo;y répondrai le plus rapidement possible.</p>
<p>A bientôt.</p>
<div class="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://www.itanea.com/blog/2011/08/19/zend-framework-2-enfin-un-peu-de-communication/"     class="crp_title">Zend Framework 2, enfin un peu de communication !</a></li><li><a href="http://www.itanea.com/blog/2010/11/18/comment-faire-tourner-les-tests-selenium-avec-des-authentification-http-basiques-sous-firefox-et-internet-explorer/"     class="crp_title">Comment faire tourner les tests Selenium avec des&hellip;</a></li><li><a href="http://www.itanea.com/blog/2011/08/30/wordpress-faille-de-securite-xss-sur-wordpress-3-1-et-3-2-1/"     class="crp_title">[WordPress] Faille de sécurité XSS sur WordPress 3.1 et&hellip;</a></li><li><a href="http://www.itanea.com/blog/2011/06/12/installation-precurio-could-not-determine-temp-directory-please-specify-a-cache_dir-manually/"     class="crp_title">Installation de Precurio : Could not determine temp&hellip;</a></li><li><a href="http://www.itanea.com/blog/2010/11/11/introduction-au-plugin-broker-du-zend-framework-2/"     class="crp_title">Introduction au plugin Broker du Zend Framework 2</a></li><li>Powered by <a href="http://ajaydsouza.com/wordpress/plugins/contextual-related-posts/" rel="nofollow">Contextual Related Posts</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.itanea.com/blog/2011/01/20/comment-eviter-le-vol-d-identite-dans-vos-applications-zend-framework-avec-le-composant-zend-auth/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

 Served from: www.itanea.com @ 2013-05-19 22:52:05 by W3 Total Cache -->