<?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>Blog de Philippe Vialatte &#187; ASP.NET</title>
	<atom:link href="https://blog.developpez.com/philippe/pcategory/net/asp-net/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.developpez.com/philippe</link>
	<description></description>
	<lastBuildDate>Fri, 03 Jan 2014 15:12:09 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.42</generator>
	<item>
		<title>A Paris du 11 au 14 Février pour les Techdays 2013</title>
		<link>https://blog.developpez.com/philippe/p11715/net/techdays201</link>
		<comments>https://blog.developpez.com/philippe/p11715/net/techdays201#comments</comments>
		<pubDate>Mon, 14 Jan 2013 16:34:45 +0000</pubDate>
		<dc:creator><![CDATA[Philippe Vialatte]]></dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[ASP.NET]]></category>

		<guid isPermaLink="false">http://blog.developpez.com/philippe/?p=205</guid>
		<description><![CDATA[Je relève la tête de mes plannings et autres joyeusetés pour vous informer que j&#8217;aurais le plaisir d’être sur Paris pour les Techdays (avec toute mon équipe) du 11 au 14 Février (et oui, en venant du Sud, faut partir un jour avant ) Cette année, je serais de plus ATE les 12 et 13 en matinée, sur ASP.NET (mais n’hésitez pas a passer pour faire un simple coucou ) PS: pour ceux qui ne [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Je relève la tête de mes plannings et autres joyeusetés pour vous informer que j&rsquo;aurais le plaisir d’être sur Paris pour les <a href="http://bit.ly/TechDays13" target="_blank">Techdays</a> (avec toute mon équipe) du 11 au 14 Février (et oui, en venant du Sud, faut partir un jour avant <img src="https://blog.developpez.com/philippe/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /> )</p>
<p><a href="http://bit.ly/TechDays13" target="_blank"><img src="http://blog.developpez.com/philippe/files/2013/01/splash_techday20131.png" alt="techday2013" width="483" height="188" class="alignnone size-full wp-image-208" /></a></p>
<p>Cette année, je serais de plus ATE les 12 et 13 en matinée, sur ASP.NET (mais n’hésitez pas a passer pour faire un simple coucou <img src="https://blog.developpez.com/philippe/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /> )</p>
<p>PS: pour ceux qui ne se sont pas encore inscrit, pensez a y aller vite ! <img src="https://blog.developpez.com/philippe/wp-includes/images/smilies/icon_biggrin.gif" alt=":D" class="wp-smiley" /></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Préparez vous pour l&#8217;aspConf</title>
		<link>https://blog.developpez.com/philippe/p11075/net/asp-net/preparez_vous_pour_larsquo_aspconf</link>
		<comments>https://blog.developpez.com/philippe/p11075/net/asp-net/preparez_vous_pour_larsquo_aspconf#comments</comments>
		<pubDate>Wed, 06 Jun 2012 09:15:00 +0000</pubDate>
		<dc:creator><![CDATA[Philippe Vialatte]]></dc:creator>
				<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[MVC]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Après 2 conférences en 2010 et en 2011, la conférence mvcConf revient cet été, cette fois ci rebaptisée aspConf L?aspConf, c?est: des conférences de qualité (en tout cas, si je me base sur les années précédents) en ligne (pas de billet d?avion ) gratuit Si le nom a changé, c?est pour inclure, en dehors des contenus orientés MVC, des sujets Azure, Webpages, et autres, alors, n?hésitez pas, et bloquez vos agendas pour les 17 et [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Après 2 conférences en 2010 et en 2011, la conférence mvcConf revient cet été, cette fois ci rebaptisée aspConf</p>
<p><a href="http://aspconf.net"><img src="http://www.aspconf.net/Content/logo.png" /></a></p>
<p>L?aspConf, c?est:</p>
<ul>
<li>des conférences de qualité (en tout cas, si je me base sur les années précédents)</li>
<li>en ligne (pas de billet d?avion <img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-winkingsmile" alt="Winking smile" src="http://blog.developpez.com/media/266/Windows-Live-Writer/Prparez-vous-pour-laspConf_C706/wlEmoticon-winkingsmile_2.png" /> )</li>
<li>gratuit</li>
</ul>
<p>Si le nom a changé, c?est pour inclure, en dehors des contenus orientés MVC, des sujets Azure, Webpages, et autres, alors, n?hésitez pas, et bloquez vos agendas pour les 17 et 18 Juillet</p>
<p>Pour s?enregistrer, c?est ici : <a href="http://www.aspconf.net/">http://www.aspconf.net/</a></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pendact 1/?: la genèse, et les premiers choix</title>
		<link>https://blog.developpez.com/philippe/p11037/net/asp-net/pendact_1_la_genese_et_les_premiers_choi</link>
		<comments>https://blog.developpez.com/philippe/p11037/net/asp-net/pendact_1_la_genese_et_les_premiers_choi#comments</comments>
		<pubDate>Mon, 21 May 2012 19:16:00 +0000</pubDate>
		<dc:creator><![CDATA[Philippe Vialatte]]></dc:creator>
				<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[MVC]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Comme tout le monde, j&#8217;ai un sombre secret. Bon, ceci dit, le mien n&#8217;est pas si sombre, ni si secret, vu que c&#8217;est une attirance certaine vers une musique qui fait beaucoup de bruit et dont les paroles sont souvent assez gutturales Comme j&#8217;ai, de plus, un petit frère dont cela devient de plus en plus le métier de jouer de ladite musique, et que justement, ils commencent a avoir besoin d&#8217;un site web, c&#8217;est [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Comme tout le monde, j&rsquo;ai un sombre secret.</p>
<p>Bon, ceci dit, le mien n&rsquo;est pas si sombre, ni si secret, vu que c&rsquo;est une attirance certaine vers une musique qui fait beaucoup de bruit et dont les paroles sont souvent assez gutturales <img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-winkingsmile" alt="Clignement d&#39;oil" src="http://blog.developpez.com/media/266/Windows-Live-Writer/Pendact-1-la-gense-et-les-premiers-choix_12FE4/wlEmoticon-winkingsmile_2.png" /></p>
<p>Comme j&rsquo;ai, de plus, un petit frère dont cela devient de plus en plus le métier de jouer de ladite musique, et que justement, ils commencent a avoir besoin d&rsquo;un site web, c&rsquo;est une bonne occasion pour:</p>
<ul>
<li>faire plaisir a un petit groupe de jeunes qui n&rsquo;en veulent;</li>
<li>faire mumuse avec des technos que je n&rsquo;utilise pas tous les jours;</li>
<li>et en faire profiter tout le monde (autrement dit, me planter en public <img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-openmouthedsmile" alt="Rire" src="http://blog.developpez.com/media/266/Windows-Live-Writer/Pendact-1-la-gense-et-les-premiers-choix_12FE4/wlEmoticon-openmouthedsmile_2.png" /> )</li>
</ul>
<p><span id="more-176"></span></p>
<p>Le premier choix est celui de la techno de développement. </p>
<p>Comme je en veux pas non plus aller trop loin du coté obscur, je vais partir sur du C#, en MVC (a priori 4), et avec du code client en Razor (dans un autre monde, j&rsquo;ai commencé en nodeJs, mais j&rsquo;ai une contrainte de temps forte, en la personne de mes enfants). Au passage, et compte bien alterner entre Webmatrix 2 et Visual Studio 11 (pour le fun).</p>
<p>Coté base de données, une petite base de données <a href="http://www.mongodb.org">MongoDB</a> me tente bien, très probablement avec <a href="http://normproject.org/">NoRM</a> pour y accéder. Pour ne pas payer trop cher, du moins au début, je vais créer une base chez <a href="https://mongolab.com/">MongoLab</a> (gratuit jusqu&rsquo;a 240 Mo)</p>
<p>En terme de gestion de configuration, je pars sur <a href="https://bitbucket.org/">bitbucket</a> et Git pour héberger le code</p>
<p>Pour l&rsquo;hébergement, je vais partir sur <a href="http://appharbor.com/">AppHarbor</a>, ce qui va me donner un bon serveur de test, avant de monter en gamme le jour ou le site est fini.</p>
<p>Au final, en faisant mes comptes:</p>
<ul>
<li>Webmatrix / VS11 beta : gratuit (le jour ou VS 11 est disponible, je passe a la version express)</li>
<li>MongoDb: gratuit pour le moment</li>
<li>Bitbucket/Git: gratuit</li>
<li>AppHarbor: gratuit</li>
</ul>
<p>Ah, oui, parce que *la* contrainte que je me mets, c&rsquo;est de tout développer avec une dépense totale de 0? (pas pour des raisons financières, mais pour montrer qu&rsquo;on peut le faire).</p>
<p>La suite au prochain épisode (heureusement qu&rsquo;il y&rsquo;a des ponts en mai <img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-winkingsmile" alt="Clignement d&#39;oil" src="http://blog.developpez.com/media/266/Windows-Live-Writer/Pendact-1-la-gense-et-les-premiers-choix_12FE4/wlEmoticon-winkingsmile_2.png" /> )</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>WASABI (Windows Azure Autoscaling Block) vient d&#8217;entrer en preview</title>
		<link>https://blog.developpez.com/philippe/p10282/net/wasabi_windows_azure_autoscaling_block_v</link>
		<comments>https://blog.developpez.com/philippe/p10282/net/wasabi_windows_azure_autoscaling_block_v#comments</comments>
		<pubDate>Tue, 13 Sep 2011 08:00:00 +0000</pubDate>
		<dc:creator><![CDATA[Philippe Vialatte]]></dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[ASP.NET]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Je n&#8217;en parle pas trop en général, mais depuis quelques mois, je passe un peu de ce qui me reste de temps libre a donner mon avis sur divers sujets au sein du Developer Guidance Customer Advisory Council .et la, justement, une des applis sur lesquelles on &#171;&#160;travaille&#160;&#187; vient d&#8217;entrer en preview, je parle de WASABI. Qu&#8217;est-ce que Wasabi ? Ce nouveau block fourni par le groupe Patterns&#38;Practice (Enterprise Libraries, pour ceux a qui cela [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Je n&rsquo;en parle pas trop en général, mais depuis quelques mois, je passe un peu de ce qui me reste de temps libre a donner mon avis sur divers sujets au sein du <a href="http://msdn.microsoft.com/en-us/practices/hh297080">Developer Guidance Customer Advisory Council</a></p>
<p>.et la, justement, une des applis sur lesquelles on &laquo;&nbsp;travaille&nbsp;&raquo; vient d&rsquo;entrer en preview, je parle de WASABI.</p>
<p>Qu&rsquo;est-ce que Wasabi ?</p>
<p>Ce nouveau block fourni par le groupe Patterns&amp;Practice (Enterprise Libraries, pour ceux a qui cela parle) permets de:</p>
<ul>
<li>monter de nouvelles instances de roles pour absorber la charge</li>
<li>diminuer le nombre d&rsquo;instances lorsque la charge redescends</li>
<li>augmenter/réduire le nombre d&rsquo;instances a date/jour définis (ventes de noël, ou jour férié, par exemple)</li>
</ul>
<p>Pour ceux qui voudraient plus d&rsquo;infos, le blog d&rsquo;annonce &laquo;&nbsp;officiel&nbsp;&raquo; est ici:</p>
<p><a href="http://blogs.msdn.com/b/agile/archive/2011/09/12/announcing-windows-azure-autoscaling-block-preview.aspx">http://blogs.msdn.com/b/agile/archive/2011/09/12/announcing-windows-azure-autoscaling-block-preview.aspx</a></p>
<p>Une petite vidéo a même été mise en ligne sur Channel9:</p>
<p><a title="http://channel9.msdn.com/posts/Autoscaling-Windows-Azure-applications" href="http://channel9.msdn.com/posts/Autoscaling-Windows-Azure-applications">http://channel9.msdn.com/posts/Autoscaling-Windows-Azure-applications</a></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Le Web.config en détails 2/? : une histoire de cookies</title>
		<link>https://blog.developpez.com/philippe/p10278/net/asp-net/web_config2_cookies</link>
		<comments>https://blog.developpez.com/philippe/p10278/net/asp-net/web_config2_cookies#comments</comments>
		<pubDate>Fri, 09 Sep 2011 19:05:00 +0000</pubDate>
		<dc:creator><![CDATA[Philippe Vialatte]]></dc:creator>
				<category><![CDATA[ASP.NET]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Hop, encore une petite période de pic de passée, un peu de temps pour blogger Après s&#8217;être intéressé a debug=true et a customErrors=false, on va voir ce que notre bon vieux Web.Config a à dire sur les cookies Non, pas ceux-la&#8230; httpOnlyCookies En me connectant sur un site, je me rends compte que, suite a la connexion, mon navigateur stocke des informations sous forme de cookies, que je peux ensuite accéder grâce a la ligne [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Hop, encore une petite période de pic de passée, un peu de temps pour blogger <img class="wlEmoticon wlEmoticon-winkingsmile" style="border-top-style: none; border-right-style: none; border-left-style: none; border-bottom-style: none" alt="Clignement d&#39;oil" src="http://blog.developpez.com/media/266/Windows-Live-Writer/e856abaa7aae_7EA/wlEmoticon-winkingsmile_2.png" /></p>
<p>Après s&rsquo;être intéressé a debug=true et a customErrors=false, on va voir ce que notre bon vieux Web.Config a à dire sur les cookies</p>
<p><img src="http://philippe.developpez.com/images/cookieMonster.jpg" alt="Cookie !!!" title="" /></p>
<p>Non, pas ceux-la&#8230;</p>
<p><span id="more-175"></span></p>
<p><strong>httpOnlyCookies</strong></p>
<p>En me connectant sur un site, je me rends compte que, suite a la connexion, mon navigateur stocke des informations sous forme de cookies, que je peux ensuite accéder grâce a la ligne suivante en javascript: </p>
<div class="code"><font color="#000000">javascript:</font><font color="#0000ff">alert</font><font color="#000000">(</font><font color="#0000ff">document</font><font color="#000000">.cookie)</font><font color="#0000ff">;</font> </div>
<p>En soi, pas de gros problème. </p>
<p>Ceci dit, si en plus, le site contient une quelconque faille XSS, ce code va me permettre de récupérer le contenu d&rsquo;un cookie, et de le renvoyer sur un autre site. A partir de la, c&rsquo;est la fin des haricots.</p>
<p>Un solution qui couvre 100% du problème est de ne pas utiliser de cookies (bon courage&#8230;oubliez session, et autres joyeusetés, mais c&rsquo;est faisable).</p>
<p>Une solution qui ne couvre *que* 90% du problème est d&rsquo;ajouter la ligne suivante au web.config:</p>
<div class="code"><font color="#0000ff">&lt;</font><font color="#800000">httpCookies</font><font color="#ff0000"> httpOnlyCookies</font><font color="#0000ff">=&quot;true&quot;/&gt;</font> </div>
<p>Mettre cette option a true va flagger tous les cookies comme étant des cookies httpOnly, qui ne pourront pas être accédés en javascript. Le risque de vol d&rsquo;identité est donc du coup limité aux utilisateurs qui accèderaient le site avec un navigateur ne gérant pas httpOnly (tant pis pour eux)</p>
<p><strong>cookieLess</strong></p>
<p>Ca y&rsquo;est, nos cookies sont en httpOnly, maintenant, on est tranquille&#8230;ou pas</p>
<p>Deux mécanismes capitaux d&rsquo;asp.net se basent sur les cookies pour fonctionner:</p>
<ul>
<li>la session </li>
<li>l&rsquo;authentification de type Forms </li>
</ul>
<p>Malheureusement, certains utilisateurs pouvant, pour des raisons diverses, ne pas avoir une configuration leur permettant de gérer les cookies, un mécanisme de gestion &laquo;&nbsp;sans cookies&nbsp;&raquo; a été implémenté pour ces mécanismes.</p>
<p>LE &laquo;&nbsp;petit&nbsp;&raquo; problème de ce mode est qu&rsquo;il va ajouter une clé directement dans l&rsquo;url. Il suffit donc de sniffer le réseau pour voir passer toutes les URLs contenant cette clé, et de copier une de ces URLs pour voler l&rsquo;identité de l&rsquo;utilisateur.</p>
<p>Alors, effectivement, cela ne va cibler que les utilisateurs qui ne peuvent pas stocker de cookies, mais si une société mets en place une règle empèchant le stockage des cookies, *tous* les utilisateurs de l&rsquo;entreprise en question vont potentiellement permettre le vol de leur identité.</p>
<p>A cela, trois options:</p>
<ul>
<li>mettre cookieLess = UseCookies. Dans ce cas, les utilisateurs n&rsquo;acceptant pas les cookies seront incapables d&rsquo;utiliser le site </li>
<li>mettre cookieLess = AutoDetect. Dans ce cas, les utilisateurs n&rsquo;acceptant les cookies pourront utiliser le site, mais seront vulnérables. Une façon de limiter ce risque est décrite dans cet article -> <a title="http://msdn.microsoft.com/en-us/magazine/dd458793.aspx" href="http://msdn.microsoft.com/en-us/magazine/dd458793.aspx">http://msdn.microsoft.com/en-us/magazine/dd458793.aspx</a> </li>
<li>mettre en place du SSL sur tout le site va aussi limiter les risques </li>
</ul>
<p><strong>requireSSL</strong></p>
<p>Vous avez un joli site web tout sécurisé, en SSL, vous avez mis les cookies en httpOnly, tout va bien. Sauf que soudain, vous vous rendez compte que vous vous êtes connecté en admin a une heure du matin et que vous avez aspiré toutes les adresses clients de la base. Aïe&#8230;</p>
<p>En fait, il est possible (un peu compliqué, mais envisageable) en exploitant une faille XSS, de voler un cookie qui est censément transmis a un site alors que le site est supposé être accédé en SSL.</p>
<p>En effet, si l&rsquo;attaquant redirige l&rsquo;utilisateur sur une adresse locale au site, mais en utilisant HTTP au lieu de HTTPS, même si le site ne va pas transmettre d&rsquo;information (une exception sera remontée), le cookie sera tout de même transmis en clair&#8230;</p>
<p>Pour cela, la solution est simple, il suffit d&rsquo;ajouter requireSSL=&nbsp;&raquo;true&nbsp;&raquo; au niveau de la balise httpCookies du web.config</p>
<p><strong>Références</strong></p>
<p>La plupart de ces infos viennent des tréfonds du site <a href="https://www.owasp.org/index.php/Category:OWASP_.NET_Project">d&rsquo;OWASP</a>, une vraie mine d&rsquo;or du genre.</p>
<p>Pour la suite, je laisse la sécurité de coté, il y&rsquo;a des petites astuces de performances a voir <img class="wlEmoticon wlEmoticon-winkingsmile" style="border-top-style: none; border-right-style: none; border-left-style: none; border-bottom-style: none" alt="Clignement d&#39;oil" src="http://blog.developpez.com/media/266/Windows-Live-Writer/e856abaa7aae_7EA/wlEmoticon-winkingsmile_2.png" /></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ASP.NET JQuery Cookbook</title>
		<link>https://blog.developpez.com/philippe/p10170/livres/asp_net_jquery_cookbook</link>
		<comments>https://blog.developpez.com/philippe/p10170/livres/asp_net_jquery_cookbook#comments</comments>
		<pubDate>Mon, 01 Aug 2011 10:52:00 +0000</pubDate>
		<dc:creator><![CDATA[Philippe Vialatte]]></dc:creator>
				<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[Livres]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[En général, les livres de développement sont structurés en deux grandes familles: les livres qui ont une approche théorique les livres qui ont une approche technique Ce livre est définitivement dans la seconde catégorie, avec une approche très détaillée de 60 &#171;&#160;recettes&#160;&#187; de développement, allant de la manipulation basique du DOM a des requêtes Ajax cross domain. Chacune des recettes est détaillée point par point, avec des exemples de code complets et des captures d&#8217;écran [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>En général, les livres de développement sont structurés en deux grandes familles:</p>
<ul>
<li>les livres qui ont une approche théorique </li>
<li>les livres qui ont une approche technique </li>
</ul>
<p>Ce livre est définitivement dans la seconde catégorie, avec une approche très détaillée de 60 &laquo;&nbsp;recettes&nbsp;&raquo; de développement, allant de la manipulation basique du DOM a des requêtes Ajax cross domain.</p>
<p>Chacune des recettes est détaillée point par point, avec des exemples de code complets et des captures d&rsquo;écran de chaque étape, ce qui permets même aux plus débutants de rapidement comprendre le fonctionnement de JQuery.</p>
<p>Au niveau des bons cotés, les recettes sont très proche de cas d&rsquo;utilisation réels (certaines sont vraiment des musts, surtout dans les deux premiers chapitres et dans les chapitres sur Ajax)</p>
<p>Le seul bémol, pour moi, est un petit manque sur le coté théorique (&#8230;bon, ceci dit, j&rsquo;ai encore mon abelson &amp; sussman sur la table de chevet, je ne suis donc pas une référence <img style="border-bottom-style: none; border-right-style: none; border-top-style: none; border-left-style: none" class="wlEmoticon wlEmoticon-winkingsmile" alt="Winking smile" src="http://blog.developpez.com/media/266/Windows-Live-Writer/776513ebf405_A98A/wlEmoticon-winkingsmile_2.png" />)</p>
<p>Si vous avez besoin de vite comprendre comment utiliser JQuery dans vos développements .NET, ce livre est fait pour vous.</p>
<p>Note globale : 4/5, Public concerné: Débutants/Intermédiaire </p>
<p>Plus d&rsquo;informations ici: <a href="http://www.packtpub.com/asp-net-jquery-cookbook/book">ASP.NET JQuery Cookbook</a></p>
<table border="0" cellspacing="0" cellpadding="2" width="797">
<tbody>
<tr>
<td valign="top" width="573"><a href="https://www.packtpub.com/toc/aspnet-jquery-cookbook-table-contents#chapter_1">Chapter 1: Working with ASP.NET Controls</a>               <br /><a href="https://www.packtpub.com/toc/aspnet-jquery-cookbook-table-contents#chapter_2">Chapter 2: Validation of ASP.NET Controls</a>               <br /><a href="https://www.packtpub.com/toc/aspnet-jquery-cookbook-table-contents#chapter_3">Chapter 3: Working with GridView Control</a>               <br /><a href="https://www.packtpub.com/toc/aspnet-jquery-cookbook-table-contents#chapter_4">Chapter 4: Working with Image Control</a>               <br /><a href="https://www.packtpub.com/toc/aspnet-jquery-cookbook-table-contents#chapter_5">Chapter 5: Animations in ASP.NET</a><b> <a href="http://www.packtpub.com/article/animation-effects-aspnet-using-jquery">(disponible en ligne)</a> </b>              <br /><a href="https://www.packtpub.com/toc/aspnet-jquery-cookbook-table-contents#chapter_6">Chapter 6: AJAX and ASP.NET (Part I)</a>               <br /><a href="https://www.packtpub.com/toc/aspnet-jquery-cookbook-table-contents#chapter_7">Chapter 7: AJAX and ASP.NET (Part II)</a>               <br /><a href="https://www.packtpub.com/toc/aspnet-jquery-cookbook-table-contents#chapter_8">Chapter 8: Client Templating in jQuery</a>               <br /><a href="https://www.packtpub.com/toc/aspnet-jquery-cookbook-table-contents#chapter_9">Chapter 9: Creating Rich Content in ASP.NET</a><b><a href="http://www.packtpub.com/sites/default/files/0461-chapter-9-creating-rich-content-in-asp-net_0.pdf">(téléchargement gratuit)</a> </b></td>
<td valign="top" width="222"><a href="http://www.packtpub.com/asp-net-jquery-cookbook/book"><img src="https://www.packtpub.com/sites/default/files/imagecache/productview/0461_EXP_ASP.NET%20jQuery%20Cookbook.jpg" width="191" height="232" /></a></td>
</tr>
</tbody>
</table>
<p>Usually, development books can be split across two distinct families:</p>
<ul>
<li>books that take a theoretical approach</li>
<li>books that take a practical approach</li>
</ul>
<p>This book definitely falls in the second category, with a very detailed approach to 60 &laquo;&nbsp;recipes&nbsp;&raquo; of development, ranging from basic manipulation of the DOM of a cross domain Ajax requests.</p>
<p>Each recipe is detailed point by point, with complete code examples and screenshots of each step, allowing even the most novice to quickly understand how jQuery works.</p>
<p>The bright side is that those recipes are very close to actual use case (some are real life savers, especially in the first two chapters and the chapters on Ajax)</p>
<p>The only downside for me is that the books lacks a bit of explanaiton on the theoretical side (&#8230;that said, I still have my Abelson &amp;Sussman on the bedside table, hence I am not a reference <img style="border-bottom-style: none; border-right-style: none; border-top-style: none; border-left-style: none" class="wlEmoticon wlEmoticon-winkingsmile" alt="Winking smile" src="http://blog.developpez.com/media/266/Windows-Live-Writer/776513ebf405_A98A/wlEmoticon-winkingsmile_2.png" />)</p>
<p>If you need to quicky get up to speed on JQuery, this book is definitely for you.</p>
<p>Note : 4/5, For: Beginner/Intermediate </p>
<p>More info here: <a href="http://www.packtpub.com/asp-net-jquery-cookbook/book">ASP.NET JQuery Cookbook</a></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Le Web.config en détails 1/?</title>
		<link>https://blog.developpez.com/philippe/p10182/net/asp-net/le_web_config_en_details_1</link>
		<comments>https://blog.developpez.com/philippe/p10182/net/asp-net/le_web_config_en_details_1#comments</comments>
		<pubDate>Thu, 04 Aug 2011 23:38:09 +0000</pubDate>
		<dc:creator><![CDATA[Philippe Vialatte]]></dc:creator>
				<category><![CDATA[ASP.NET]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Dans la foulée des posts précédents, et au vu de certaines réactions autour de moi, je démarre avec ce post une petite série sur le Web.config, avec comme objectif d&#8217;améliorer la sécurité des sites et de lister les bonnes pratiques liées a ce fichier de configuration. Aujourd&#8217;hui, premier billet, on va parler des deux &#171;&#160;erreurs&#160;&#187; les plus classiques du genre, à savoir l&#8217;activation du debug en production, et l&#8217;affichage des erreurs. Symptômes Lors d&#8217;une erreur [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Dans la foulée des posts précédents, et au vu de certaines réactions autour de moi, je démarre avec ce post une petite série sur le Web.config, avec comme objectif d&rsquo;améliorer la sécurité des sites et de lister les bonnes pratiques liées a ce fichier de configuration.</p>
<p>Aujourd&rsquo;hui, premier billet, on va parler des deux &laquo;&nbsp;erreurs&nbsp;&raquo; les plus classiques du genre, à savoir l&rsquo;activation du debug en production, et l&rsquo;affichage des erreurs.</p>
<p><span id="more-173"></span></p>
<p><strong>Symptômes</strong></p>
<p>Lors d&rsquo;une erreur sur le site, l&rsquo;utilisateur voit l&rsquo;écran suivant s&rsquo;afficher</p>
<p><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="webconf1" border="0" alt="webconf1" src="http://blog.developpez.com/media/266/Windows-Live-Writer/Le-Web.config_C81A/webconf1_3.jpg" width="616" height="397" /></p>
<p>Ouch.</p>
<p><strong>Raisons</strong></p>
<p>Lorsque l&rsquo;on va lancer l&rsquo;application depuis Visual Studio la toute première fois, on va avoir ce petit dialogue (si, tout le monde l&rsquo;a vu&#8230;et cliqué sur OK direct).</p>
<p><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="webconf2" border="0" alt="webconf2" src="http://blog.developpez.com/media/266/Windows-Live-Writer/Le-Web.config_C81A/webconf2_3.jpg" width="465" height="218" /></p>
<p>Si on laisse l&rsquo;option par défaut, Visual Studio va automatiquement ajouter, dans le Web.config, la ligne</p>
<div id="codeSnippetWrapper">
<div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #0000ff">&lt;</span><span style="color: #800000">compilation</span> <span style="color: #ff0000">debug</span><span style="color: #0000ff">=&quot;true&quot;</span><span style="color: #0000ff">&gt;</span> </pre>
</div>
</div>
<p>L&rsquo;affichage du message, lui, vient de la propriété CustomErrors, qui est, la plupart du temps, mise a Off dans les environnements de Validation ou de QA, de façon a pouvoir voir le détail des erreurs:</p>
<div id="codeSnippetWrapper">
<div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #0000ff">&lt;</span><span style="color: #800000">customErrors</span> <span style="color: #ff0000">mode</span><span style="color: #0000ff">=&quot;Off&quot;</span><span style="color: #0000ff">&gt;</span> </pre>
</div>
</div>
<p><strong>Risques et inconvénients</strong></p>
<p>En fonction de l&rsquo;endroit ou se produit l&rsquo;erreur, ce scénario va d&rsquo;afficher des données permettant de faciliter une attaque. Rien qu&rsquo;avec l&rsquo;écran ci-dessus, je sais quelle est la version du Framework, quelle est la version d&rsquo;ASP.NET. </p>
<p>Je peux aussi déduire d&rsquo;autres informations a partir du type de l&rsquo;exception, et la pile des appels me donne une vue sur la logique de développement de l&rsquo;application (signature des méthodes).</p>
<p>Dans le pire des cas, un éventuel attaquant pourra voir des portions de code (comme ci-dessus).</p>
<p>De plus, lorsque l&rsquo;application est en mode debug, elle subit des surcouts en terme de performance, liés à:</p>
<ol>
<li>La désactivation de certaines optimisations lors de la compilation des pages ASP.NET </li>
<li>Une augmentation de l&rsquo;utilisation de la mémoire </li>
<li>La désactivation du cache pour les Scripts et les images récupérés depuis le handler WebResources.axd </li>
</ol>
<p>(source : <a href="http://weblogs.asp.net/scottgu/archive/2006/04/11/Don_1920_t-run-production-ASP.NET-Applications-with-debug_3D001D20_true_1D20_-enabled.aspx">http://weblogs.asp.net/scottgu/archive/2006/04/11/Don_1920_t-run-production-ASP.NET-Applications-with-debug_3D001D20_true_1D20_-enabled.aspx</a>)</p>
<p><strong>Solution</strong></p>
<p>Pour corriger ces deux problèmes, la solution est simplissime, il suffit de modifier le Web.Config de la façon suivante:</p>
<div id="codeSnippetWrapper">
<div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #0000ff">&lt;</span><span style="color: #800000">configuration</span><span style="color: #0000ff">&gt;</span> </pre>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">  <span style="color: #0000ff">&lt;</span><span style="color: #800000">system.web</span><span style="color: #0000ff">&gt;</span> </pre>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">    <span style="color: #0000ff">&lt;</span><span style="color: #800000">customErrors</span> <span style="color: #ff0000">mode</span><span style="color: #0000ff">=&quot;RemoteOnly&quot;</span><span style="color: #0000ff">&gt;</span> </pre>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">    <span style="color: #0000ff">&lt;</span><span style="color: #800000">compilation</span> <span style="color: #ff0000">debug</span><span style="color: #0000ff">=&quot;false&quot;</span><span style="color: #0000ff">&gt;</span> </pre>
</div>
</div>
<p>Pour la section customErrors, il est même conseillé de définir des pages d&rsquo;erreur en fonction du code d&rsquo;erreur retourné (l&rsquo;exemple se trouve dans le web.config par défaut <img style="border-bottom-style: none; border-right-style: none; border-top-style: none; border-left-style: none" class="wlEmoticon wlEmoticon-winkingsmile" alt="Winking smile" src="http://blog.developpez.com/media/266/Windows-Live-Writer/Le-Web.config_C81A/wlEmoticon-winkingsmile_2.png" /> )</p>
<p>Encore mieux, pour la partie debug, il est possible de &laquo;&nbsp;forcer&nbsp;&raquo; debug à false sur toutes les applications de la machine en ajoutant, dans le machine.config, la ligne suivante:</p>
<div id="codeSnippetWrapper">
<div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #0000ff">&lt;</span><span style="color: #800000">configuration</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">    <span style="color: #0000ff">&lt;</span><span style="color: #800000">system.web</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">          <span style="color: #0000ff">&lt;</span><span style="color: #800000">deployment</span> <span style="color: #ff0000">retail</span><span style="color: #0000ff">=&quot;true&quot;</span><span style="color: #0000ff">/&gt;</span></pre>
</div></div>
<p>Et oui, dans des audits, c&rsquo;est malheureusement ce qui revient le plus souvent&#8230;</p>
<p>Et-ce que ces informations vous sont utiles (je m&rsquo;adresse a mon unique visiteur, mais je le vouvoies par politesse <img style="border-bottom-style: none; border-right-style: none; border-top-style: none; border-left-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://blog.developpez.com/media/266/Windows-Live-Writer/Le-Web.config_C81A/wlEmoticon-smile_2.png" />), ou est-ce qu&rsquo;il vaut mieux que je parle d&rsquo;autre chose ?</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pourquoi il est important de vérifier son Web.Config en production</title>
		<link>https://blog.developpez.com/philippe/p10165/net/asp-net/pourquoi_il_est_important_de_verifier_so</link>
		<comments>https://blog.developpez.com/philippe/p10165/net/asp-net/pourquoi_il_est_important_de_verifier_so#comments</comments>
		<pubDate>Sat, 30 Jul 2011 20:42:00 +0000</pubDate>
		<dc:creator><![CDATA[Philippe Vialatte]]></dc:creator>
				<category><![CDATA[ASP.NET]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Je ne redonnerais pas le nom du site sur le blog (j&#8217;en ai déja parlé sur google+), mais, en cherchant une recette de gateau au chocolat (il en faisait pas trés beau cet après-midi), je tombe, sur cette page: Sur un site grand public, ca fait mauvais genre. Passons. Ce soir (j&#8217;ai ré-essayé quelques fois dans la journée, sans succès), toujours décidé a utiliser ma dernière tablette de chocolat, je retourne (oui, j&#8217;insiste) sur le [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Je ne redonnerais pas le nom du site sur le blog (j&rsquo;en ai déja parlé sur google+), mais, en cherchant une recette de gateau au chocolat (il en faisait pas trés beau cet après-midi), je tombe, sur cette page:</p>
<p><img title="chocolateException" style="border-right: 0px; padding-right: 0px; border-top: 0px; display: inline; padding-left: 0px; background-image: none; border-left: 0px; padding-top: 0px; border-bottom: 0px" height="355" alt="chocolateException" src="http://blog.developpez.com/media/266/Windows-Live-Writer/Pourquoi-il-est-imp.Config-en-production_144C6/chocolateException_3.jpg" width="792" border="0" /></p>
<p>Sur un site grand public, ca fait mauvais genre.</p>
<p>Passons.</p>
<p>Ce soir (j&rsquo;ai ré-essayé quelques fois dans la journée, sans succès), toujours décidé a utiliser ma dernière tablette de chocolat, je retourne (oui, j&rsquo;insiste) sur le site, pour récupérer une recette.</p>
<p>A un moment donné, je notes, sur ce site une URL qui reçoit un paramètre (la plupart des autres sont des URLs &laquo;&nbsp;en dur&nbsp;&raquo;). Je vais donc jusqu&rsquo;au bout de ma bêtise, et je bidouilles l&rsquo;ID.</p>
<p>Et la, c&rsquo;est le drame:</p>
<p><a href="http://blog.developpez.com/media/266/Windows-Live-Writer/Pourquoi-il-est-imp.Config-en-production_144C6/chocolateException_2.png"><img title="chocolateException" style="border-right: 0px; padding-right: 0px; border-top: 0px; display: inline; padding-left: 0px; background-image: none; border-left: 0px; padding-top: 0px; border-bottom: 0px" height="349" alt="chocolateException" src="http://blog.developpez.com/media/266/Windows-Live-Writer/Pourquoi-il-est-imp.Config-en-production_144C6/chocolateException_thumb.png" width="711" border="0" /></a></p>
<p>Donc, de ces deux infos, on peut en déduire (ou du moins supposer) que:</p>
<ul>
<li>le site web n&rsquo;a pas de mécanisme de monitoring (le site est resté H.S. une bonne partie de la journée, pour ce qui était probablement une typo dans le web.config)</li>
<li>le développeur a utilisé Cast, au lieu d&rsquo;un TryCast (pas gravissime en soi, mais permets d&rsquo;induire une erreur)</li>
<li>le web.config a CustomErrors=false</li>
</ul>
<p>Ce qui nous donne un bon exemple pour une <a href="http://blog.developpez.com/philippe/p10136/net/asp-net/le-minimum-absolu-de-la-securite-vu-du-c/">quatrième faute</a> inexcusable si vous avez un site web externe, a savoir ne pas vérifier son web.config avant la mise en prod (en étant trés feignant, un tour sur <a title="http://www.wcanalyzer.com/" href="http://www.wcanalyzer.com/">http://www.wcanalyzer.com/</a> suffit <img class="wlEmoticon wlEmoticon-winkingsmile" style="border-top-style: none; border-right-style: none; border-left-style: none; border-bottom-style: none" alt="Clignement d&#39;oil" src="http://blog.developpez.com/media/266/Windows-Live-Writer/Pourquoi-il-est-imp.Config-en-production_144C6/wlEmoticon-winkingsmile_2.png" /> )</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Une première Roadmap pour ASP.NET MVC 4</title>
		<link>https://blog.developpez.com/philippe/p10146/net/asp-net/une_premiere_roadmap_pour_asp_net_mvc_4</link>
		<comments>https://blog.developpez.com/philippe/p10146/net/asp-net/une_premiere_roadmap_pour_asp_net_mvc_4#comments</comments>
		<pubDate>Tue, 19 Jul 2011 20:18:00 +0000</pubDate>
		<dc:creator><![CDATA[Philippe Vialatte]]></dc:creator>
				<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[MVC]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[La semaine dernière (je n&#8217;avais pas vu, c&#8217;était les vacances ), Phil Haack, Program Manager pour ASP.NET a mis à disposition une première versionde la roadmap de MVC 4. Une des choses que j&#8217;adore avec l&#8217;équipe MVC, c&#8217;est que, contrairement a d&#8217;autres (suivez mon regard&#8230;Azure, peut-être ???), les roadmaps sont annoncées un petit bail a l&#8217;avance, et que, même si cela bouge entre temps, cela permets d&#8217;alimenter le dialogue avec l&#8217;équipe de Dev (qui a [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>La semaine dernière (je n&rsquo;avais pas vu, c&rsquo;était les vacances <img style="border-bottom-style: none; border-right-style: none; border-top-style: none; border-left-style: none" class="wlEmoticon wlEmoticon-winkingsmile" alt="Winking smile" src="http://blog.developpez.com/media/266/Windows-Live-Writer/Une-premire-Roadmap-pour-ASP.NET-MVC-4_141D7/wlEmoticon-winkingsmile_2.png" /> ), Phil Haack, Program Manager pour ASP.NET a mis à disposition une première versionde la roadmap de MVC 4.</p>
<p>Une des choses que j&rsquo;adore avec l&rsquo;équipe MVC, c&rsquo;est que, contrairement a d&rsquo;autres (suivez mon regard&#8230;Azure, peut-être ???), les roadmaps sont annoncées un petit bail a l&rsquo;avance, et que, même si cela bouge entre temps, cela permets d&rsquo;alimenter le dialogue avec l&rsquo;équipe de Dev (qui a le grand mérite d&rsquo;être ouverte aux remarques).</p>
<p>Dans cette nouvelle roadmap, on apprends donc que le but, pour MVC 4, est (tout simplement&#8230;) d&rsquo;en faire la <strong>meilleure plate-forme pour écrire des applications riches pour le web</strong> (oui, le gras est d&rsquo;origine <img style="border-bottom-style: none; border-right-style: none; border-top-style: none; border-left-style: none" class="wlEmoticon wlEmoticon-openmouthedsmile" alt="Open-mouthed smile" src="http://blog.developpez.com/media/266/Windows-Live-Writer/Une-premire-Roadmap-pour-ASP.NET-MVC-4_141D7/wlEmoticon-openmouthedsmile_2.png" />).</p>
<p>Au programme, entre autres:</p>
<ul>
<li>Une amélioration du développement et déploiement, que ce soit ciblé vers une machine &lsquo;classique&rsquo; ou vers Azure</li>
<li>Un meilleur support des projets orientés vers les Mobiles (téléphones et tablettes)</li>
<li>L&rsquo;ajout de recettes (recipes), ou comment apporter une touche de développement orienté composants <img style="border-bottom-style: none; border-right-style: none; border-top-style: none; border-left-style: none" class="wlEmoticon wlEmoticon-winkingsmile" alt="Winking smile" src="http://blog.developpez.com/media/266/Windows-Live-Writer/Une-premire-Roadmap-pour-ASP.NET-MVC-4_141D7/wlEmoticon-winkingsmile_2.png" /></li>
<li>&#8230;et pas mal de petites choses sympathiques qui viennent améliorer l&rsquo;expérience de développement (meilleur support des helpers Razor, css bundling, meilleur support de HTML5 et autres)</li>
</ul>
<p>L&rsquo;intégralité de la roadmap est situé ici: <a href="http://aspnet.codeplex.com/wikipage'title=ASP.NET%20MVC%204%20RoadMap">http://aspnet.codeplex.com/wikipage&rsquo;title=ASP.NET%20MVC%204%20RoadMap</a></p>
<p>Personnellement, depuis la sortie de la v1 de MVC, je reste scotché par ce Framework, et ce n&rsquo;est pas son évolution récente qui va diminuer mon enthousiasme (Hmmmmm, Razor)</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Le minimum absolu de la sécurité (vu du coté du web)</title>
		<link>https://blog.developpez.com/philippe/p10136/net/le_minimum_absolu_de_la_securite_vu_du_c</link>
		<comments>https://blog.developpez.com/philippe/p10136/net/le_minimum_absolu_de_la_securite_vu_du_c#comments</comments>
		<pubDate>Mon, 18 Jul 2011 09:39:00 +0000</pubDate>
		<dc:creator><![CDATA[Philippe Vialatte]]></dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[ASP.NET]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Une question qui se pose régulièrement dans des revues de code en web est celle de savoir a partir de quand il faut taper, ou au moins se fâcher tout rouge. Après pas mal d&#8217;itérations, voici la liste de ce qui, de mon avis, ne devrait pas se trouver dans le code d&#8217;un développeur Web en 2011 (pas que cela aurait du s&#8217;y trouver en 2010): Les entrées utilisateur non encodées Les dernières versions du [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Une question qui se pose régulièrement dans des revues de code en web est celle de savoir a partir de quand il faut taper, ou au moins se fâcher tout rouge.</p>
<p>Après pas mal d&rsquo;itérations, voici la liste de ce qui, de mon avis, ne devrait pas se trouver dans le code d&rsquo;un développeur Web en 2011 (pas que cela aurait du s&rsquo;y trouver en 2010):</p>
<p><strong>Les entrées utilisateur non encodées</strong></p>
<p>Les dernières versions du framework ont rendu beaucoup plus simple (comprendre un seul caractère: <a href="http://philippe.developpez.com/articles/nouveautes-asp-net-4/#LVIII-H">http://philippe.developpez.com/articles/nouveautes-asp-net-4/#LVIII-H</a>)  l&rsquo;encodage du text, et la bibliothèque anti-xss peut maintenant être <a href="http://haacked.com/archive/2010/04/06/using-antixss-as-the-default-encoder-for-asp-net.aspx">facilement utilisée dans un projet</a></p>
<p><strong>Des paramètres de requête non parsés/non contraints</strong></p>
<p>Utiliser TryParse sur tous les composants de la query string ne coute rien, mais permets d&rsquo;éviter pas mal de mauvaises surprises en prod.</p>
<p>De la même façon, vérifier la longueur de ces valeurs, dans le cas d&rsquo;une chaine, ne mange pas de pain</p>
<p><strong>Du SQL construit a la main sans paramètres</strong></p>
<p>Vu le cout de l&rsquo;utilisation des paramètres, laisser la porte ouverte a une injection SQL, ca mérite un coup de pied quelque part. A noter, l&rsquo;article suivant date de 2008: <a href="http://johannblais.developpez.com/tutoriel/dotnet/bonnes-pratiques-acces-donnees/">http://johannblais.developpez.com/tutoriel/dotnet/bonnes-pratiques-acces-donnees/</a></p>
<p> </p>
<p>A noter, c&rsquo;est évidemment non exhaustif, mais c&rsquo;est juste le petit quelque chose qui va faire sonner les oreilles de quelqu&rsquo;un si je tombe dessus dans une revue <img style="border-bottom-style: none; border-right-style: none; border-top-style: none; border-left-style: none" class="wlEmoticon wlEmoticon-winkingsmile" alt="Winking smile" src="http://blog.developpez.com/media/266/Windows-Live-Writer/Le-minimum-absolu-de-la-scurit-Web_E37C/wlEmoticon-winkingsmile_2.png" /></p>
<p>Et vous, y a t&rsquo;il une erreur grossière qui vous fait bondir ?</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
