<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>The Butterfly Effect (2)</title><link>http://dotnetjunkies.com/WebLog/afontes/default.aspx</link><description>Antonio Fontes / Blog / Conseil / Communication / Genève / HEG / Intelligence et guerre économique / Management et sécurité de l'information / NTIC / Sécurité des applications web / Veille</description><dc:language>en-US</dc:language><generator>CommunityServer 1.0 (Build: 1.0.1.50214)</generator><item><title>Trop de spam : migration sur Futureblogs</title><link>http://dotnetjunkies.com/WebLog/afontes/archive/2005/05/30/100976.aspx</link><pubDate>Mon, 30 May 2005 15:29:00 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:100976</guid><dc:creator>saphyr</dc:creator><slash:comments>0</slash:comments><comments>http://dotnetjunkies.com/WebLog/afontes/comments/100976.aspx</comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/afontes/commentrss.aspx?PostID=100976</wfw:commentRss><description>&lt;P&gt;Marre, c'est le mot. Cela fait des semaines que j'attends de voir si les adminstrateurs vont faire quelque chose pour emp&amp;#234;cher ces rafales de spam via les commentaires. Rien n'est fait, alors, je change de 'prestataire'. &lt;/P&gt;
&lt;P&gt;Il para&amp;#238;t que l'on n'est jamais mieux servi que par soi-m&amp;#234;me. Raison pour laquelle je tente ma chance sur ma propre plate-forme de blogs (Futureblogs). Ca fera un bon test, la charge DNJ est toute autre que la petite quantit&amp;#233; de visiteurs 'r&amp;#233;gionaux' acc&amp;#232;dant aux blogs romands.&lt;/P&gt;
&lt;P&gt;Nous verrons bien, si vous avez appreci&amp;#233; les articles publi&amp;#233;s sur ce blog, la suite se passera donc sur: &lt;A href="http://www.futureblogs.net/butterfly-effect"&gt;http://www.futureblogs.net/butterfly-effect&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;En esp&amp;#232;rant vous revoir l&amp;#224;-bas, je d&amp;#233;sactive d&amp;#232;s &amp;#224; pr&amp;#233;sent les commentaires sur ce blog.&lt;/P&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=100976" width="1" height="1"&gt;</description></item><item><title>Responsabilités d'une application web face aux attaques</title><link>http://dotnetjunkies.com/WebLog/afontes/archive/2005/01/19/46280.aspx</link><pubDate>Wed, 19 Jan 2005 23:59:00 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:46280</guid><dc:creator>saphyr</dc:creator><slash:comments>0</slash:comments><comments>http://dotnetjunkies.com/WebLog/afontes/comments/46280.aspx</comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/afontes/commentrss.aspx?PostID=46280</wfw:commentRss><description>&lt;P&gt;Une petite discussion hier soir sur les &amp;#8216;responsabilit&amp;#233;s&amp;#8217; qu&amp;#8217;une application web devrait &amp;#234;tre en mesure d&amp;#8217;assumer de mani&amp;#232;re autonome&amp;#8230;&lt;BR&gt;&lt;A id=more-3&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Application responsable ?&lt;/STRONG&gt;&lt;BR&gt;L&amp;#8217;on peut interpr&amp;#233;ter cela comme un abus de langage, certes. Par responsabilit&amp;#233;, il est entendu ici &amp;#8216;la capacit&amp;#233; &amp;#224; rester dans un &amp;#233;tat tel que les objectifs fix&amp;#233;s (d&amp;#8217;&amp;#233;tat ou de transition) soient maintenus, et ceci, de mani&amp;#232;re autonome, donc sans intervention humaine.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Quelles responsabilit&amp;#233;s ?&lt;/STRONG&gt;&lt;BR&gt;Trois responsabilit&amp;#233;s ont &amp;#233;t&amp;#233; identifi&amp;#233;s. Cette liste n&amp;#8217;est aucunement exhaustive et reste donc sujette &amp;#224; d&amp;#233;bat: &lt;/P&gt;
&lt;BLOCKQUOTE&gt;
- D&amp;#233;tecter les attaques&lt;BR&gt;
- Se d&amp;#233;fendre contre les attaques&lt;BR&gt;
- R&amp;#233;agir aux les attaques: contre-mesures 
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;STRONG&gt;Responsabilit&amp;#233; #1: d&amp;#233;tecter les attaques&lt;/STRONG&gt;&lt;BR&gt;Cette responsabilit&amp;#233; regroupe des comportements souvent appel&amp;#233;s &amp;#8216;mesures de surveillance&amp;#8217;: l&amp;#8217;application se place dans un &amp;#233;tat d&amp;#8217;&amp;#233;veil et doit &amp;#234;tre en mesure de comprendre son environnement et de d&amp;#233;tecter si elle se trouve confront&amp;#233;e &amp;#224; des acteurs hostiles ou non.&lt;/P&gt;
&lt;P&gt;Dans le concret, des mesures de d&amp;#233;tection dans une application web seront par exemple: &lt;/P&gt;
&lt;P&gt;- d&amp;#233;tecter si un formulaire d&amp;#8217;authentification subit une attaque de type brute force&lt;BR&gt;- d&amp;#233;tecter l&amp;#8217;envoi de fichiers dont l&amp;#8217;extension ne correspond pas au type mime d&amp;#233;tect&amp;#233;&lt;BR&gt;- d&amp;#233;tecter si tous les champs &amp;#8216;obligatoires&amp;#8217; d&amp;#8217;un formulaire ont bien &amp;#233;t&amp;#233; remplis&lt;BR&gt;- etc.&lt;/P&gt;
&lt;P&gt;Ces comportements peuvent &amp;#234;tre g&amp;#233;r&amp;#233;s en deux points strat&amp;#233;giques: ponctuellement (local) ou de mani&amp;#232;re centralis&amp;#233;e.&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;d&amp;#233;tection ponctuelle&lt;/EM&gt;&lt;BR&gt;La d&amp;#233;tection ponctuelle, l&amp;#224; o&amp;#249; la fonctionnalit&amp;#233; est impl&amp;#233;ment&amp;#233;e, se manifestera souvent par la pr&amp;#233;sence de formants de s&amp;#233;lection/condition entourant la proc&amp;#233;dure utile. L&amp;#8217;on aura par exemple un code de type: &lt;/P&gt;&lt;PRE class=code&gt;if(IsValid(userName) &amp;amp;&amp;amp; IsValid(userPassword))
{
  //do something
}
&lt;/PRE&gt;
&lt;P&gt;Les avantages sont clairs: les mesures de d&amp;#233;tection peuvent &amp;#234;tre extr&amp;#234;mement granul&amp;#233;es et adapt&amp;#233;es &amp;#224; chaque cas. D&amp;#8217;un autre c&amp;#244;t&amp;#233;, la maintenance d&amp;#8217;une telle logique peut en prendre un sacr&amp;#233; co&amp;#251;t lorsqu&amp;#8217;il faudra effectuer des modifications de masse dans l&amp;#8217;application, telles qu&amp;#8217;un changement de logique dans la validation des formulaires d&amp;#8217;un Intranet par exemple.&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;d&amp;#233;tection centralis&amp;#233;e&lt;/EM&gt;&lt;BR&gt;D&amp;#8217;un autre c&amp;#244;t&amp;#233;, les comportements de d&amp;#233;tection peuvent &amp;#234;tre d&amp;#233;tect&amp;#233;s de mani&amp;#232;re centralis&amp;#233;e, pour autant que la technologie le permette. Microsoft, au travers de la technologie Active Server Pages par exemple a fourni aux d&amp;#233;veloppeurs d&amp;#8217;applications l&amp;#8217;acc&amp;#232;s &amp;#224; des points de flux strat&amp;#233;giques tels que l&amp;#8217;initialisation d&amp;#8217;une session ou d&amp;#8217;une application. Le concept a &amp;#233;t&amp;#233; pouss&amp;#233; &amp;#224; l&amp;#8217;efficacit&amp;#233; dans la technologie Dotnet gr&amp;#226;ce &amp;#224; laquelle un d&amp;#233;veloppeur peut intercepter une multitude d&amp;#8217;&amp;#233;v&amp;#233;nements bien critiques aux applications web tels que l&amp;#8217;arriv&amp;#233;e d&amp;#8217;une nouvelle requ&amp;#234;te, la fin du traitement d&amp;#8217;une requ&amp;#234;te, le d&amp;#233;clenchement de toute forme d&amp;#8217;erreur, etc. &lt;/P&gt;
&lt;P&gt;La d&amp;#233;tection centralis&amp;#233;e prendra plut&amp;#244;t la forme suivante, dans l&amp;#8217;exemple ci-dessous, l&amp;#8217;application est en mesure de d&amp;#233;tecter de mani&amp;#232;re centralis&amp;#233;e pour tout formulaire soumis si un champ texte d&amp;#233;passera une longueur limite &amp;#8216;globalement&amp;#8217; impos&amp;#233;e &amp;#224; l&amp;#8217;application: &lt;/P&gt;&lt;PRE class=code&gt;Application_BeginRequest(...)
{
  foreach(string Key in Request.Form.Keys)
  {
    string value = Request.Form[key];
    if(value.Length &amp;gt; MAX_FORM_TEXT_LENGTH)
    {
      ...
    }
  }
}
&lt;/PRE&gt;
&lt;P&gt;La strat&amp;#233;gie optimale consistera, l&amp;#8217;on s&amp;#8217;en doute, &amp;#224; bien r&amp;#233;partir les objectifs entre des points de contr&amp;#244;le &amp;#8216;localis&amp;#233;s&amp;#8217; et des points de contr&amp;#244;le &amp;#8216;centralis&amp;#233;s&amp;#8217;.&lt;/P&gt;
&lt;DIV class=storycontent&gt;
&lt;P&gt;&lt;STRONG&gt;Responsabilit&amp;#233; #2: se d&amp;#233;fendre contre les attaques&lt;/STRONG&gt;&lt;BR&gt;Un peu plus &amp;#8216;active&amp;#8217; cette fois, cette responsabilit&amp;#233; regroupe des mesures dites &amp;#8216;pr&amp;#233;ventives&amp;#8217;. Le but ici sera soit 1) d&amp;#8217;isoler ou d&amp;#233;vier l&amp;#8217;attaque 2) l&amp;#8217;ignorer 3) la neutraliser 4) s&amp;#8217;y contraindre (dernier cas &amp;#224; &amp;#233;viter, bien entendu).&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;isoler l&amp;#8217;attaque&lt;/EM&gt;&lt;BR&gt;L&amp;#8217;isolation est un concept un peu abstrait en mati&amp;#232;re d&amp;#8217;applications web mais il est h&amp;#233;rit&amp;#233; de l&amp;#8217;administration de certains syst&amp;#232;mes au sein desquels il est possible de &amp;#8216;rediriger&amp;#8217; des flux vers le n&amp;#233;ant (un bon /dev/null par exemple). L&amp;#8217;attaque n&amp;#8217;est dans ce cas pas neutralis&amp;#233;e mais simplement d&amp;#233;vi&amp;#233;e. Ce concept est rare en termes de s&amp;#233;curit&amp;#233; d&amp;#8217;applications web.&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;ignorer l&amp;#8217;attaque&lt;/EM&gt;&lt;BR&gt;Ignorer une attaque est la solution la plus efficace en mati&amp;#232;re de s&amp;#233;curit&amp;#233;. Mais, selon l&amp;#8217;orgueil des ma&amp;#238;tres d&amp;#8217;oeuvre, elle n&amp;#233;glige la notion de r&amp;#233;pression (capture de l&amp;#8217;attaque, r&amp;#233;cup&amp;#233;ration de l&amp;#8217;adresse IP de l&amp;#8217;attaquant et suivi p&amp;#233;nal ou toute autre mesure de dissuasion) et de statistique. Les strat&amp;#233;gie de &amp;#8216;d&amp;#233;fense&amp;#8217; par ignorance de l&amp;#8217;attaque se manifesteront souvent dans un code par des branchements conditionnels ne comportant pas de cas &amp;#8216;else&amp;#8217; ainsi que des appels de contr&amp;#244;le retournant des bool&amp;#233;ens:&lt;/P&gt;&lt;PRE class=code&gt;if(IsValid(something))
{
  ...do something...
}
&lt;/PRE&gt;
&lt;P&gt;&lt;EM&gt;neutraliser l&amp;#8217;attaque&lt;/EM&gt;&lt;BR&gt;Dans les structure un peu moins &amp;#8216;impardonnables&amp;#8217; , telles que les applications web grand public, il peut &amp;#234;tre n&amp;#233;cessaire de placer des mesures pr&amp;#233;ventives/correctives: l&amp;#8217;attaque est neutralis&amp;#233;e mais le processus est maintenu. Cela se manifestera dans le code soit par des branchements conditionnels sur contr&amp;#244;les bool&amp;#233;ens, ou, des appels sur des contr&amp;#244;les proc&amp;#233;duraux: &lt;/P&gt;
&lt;P&gt;exemple de neutralisation par branchement conditionnel/contr&amp;#244;le bool&amp;#233;en&lt;/P&gt;&lt;PRE class=code&gt;if(IsValid(something))
{
  ... do this...
}
else
{
 ... do that...
}
&lt;/PRE&gt;
&lt;P&gt;exemple de neutralisation par appels proc&amp;#233;duraux: &lt;/P&gt;&lt;PRE class=code&gt;string userPassword = Security.Validate(userPassword);
... do this...
&lt;/PRE&gt;
&lt;P&gt;Le second cas est bien s&amp;#251;r beaucoup plus risqu&amp;#233; dans la mesure o&amp;#249; l&amp;#8217;on part sur la conviction que nos m&amp;#233;canismes de neutralisation sont efficaces et &amp;#224; jour. Ce qui n&amp;#8217;est fr&amp;#233;quemment le cas que sur un tr&amp;#232;s court instant&amp;#8230;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;se soumettre &amp;#224; l&amp;#8217;attaque&lt;/EM&gt;&lt;BR&gt;Se contraindre &amp;#224; l&amp;#8217;attaque est le cas &amp;#224; &amp;#233;viter par excellence, mais reste malheureusement un cas bien fr&amp;#233;quent. En termes d&amp;#8217;analyse de code, cela se manifestera usuellement par des traitements m&amp;#233;tier sur des donn&amp;#233;es juste apr&amp;#232;s leur r&amp;#233;cup&amp;#233;ration: &lt;/P&gt;&lt;PRE class=code&gt;string username = Request.Form("username");
string userpassword = Request.Form("userpassword");
AuthenticateUser(username, userpassword);
&lt;/PRE&gt;&lt;/DIV&gt;
&lt;DIV class=feedback&gt;
&lt;DIV class=storycontent&gt;
&lt;P&gt;&lt;STRONG&gt;Responsabilit&amp;#233; #3: r&amp;#233;agir aux attaques par des contre-mesures/contre-attaques&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Le troisi&amp;#232;me niveau de responsabilit&amp;#233; est le plus difficile &amp;#224; atteindre si l&amp;#8217;on souhaite respecter cette notion d&amp;#8217; &amp;#8220;autonomie&amp;#8221; de l&amp;#8217;application web. Cette derni&amp;#232;re est &amp;#224; ce stade capable de d&amp;#233;tecter les situations hostiles et de se positionner afin choisir le comportement le plus ad&amp;#233;quat en vue de conserver un &amp;#233;tat s&amp;#251;r.&lt;/P&gt;
&lt;P&gt;Malheureusement, il y a des cas, le monde nous le prouve chaque seconde, o&amp;#249; la meilleure d&amp;#233;fense peut &amp;#234;tre l&amp;#8217;attaque. Cependant, la notion d&amp;#8217;attaque, si l&amp;#8217;on s&amp;#8217;en tient aux trait&amp;#233;s de strat&amp;#233;gie tels que l&amp;#8217;Art de la Guerre pour n&amp;#8217;en citer qu&amp;#8217;un seul, implique TOUJOURS une fen&amp;#234;tre de vuln&amp;#233;rabilit&amp;#233;. &lt;/P&gt;
&lt;P&gt;Pour illustrer cela, trois situations typiques de contre-mesures/contre-attaques et leur fen&amp;#234;tre de vuln&amp;#233;rabilit&amp;#233; sont analys&amp;#233;es. &lt;/P&gt;
&lt;P&gt;Pour rappel: une vuln&amp;#233;rabilit&amp;#233; en mati&amp;#232;re de s&amp;#233;curit&amp;#233; de syst&amp;#232;mes d&amp;#8217;information se manifeste par un non-respect partiel ou total de l&amp;#8217;un des trois axes CIA (Confidentialit&amp;#233; / Int&amp;#233;grit&amp;#233; / Disponibilit&amp;#233; (Availablity) ).&lt;/P&gt;
&lt;P&gt;De plus, une contre-mesure vise &amp;#224; contrer une attaque (attaque/contre-mesure synchrones) alors qu&amp;#8217;une contre-attaque vise &amp;#224; attaquer en retour, suite &amp;#224; une attaque (attaque/contre-attaque asynchrones).&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Contre-mesure #1: protection contre les attaques brute-force par un m&amp;#233;canisme de verrouillage de compte&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;Lorsque l&amp;#8217;application d&amp;#233;tecte trois tentatives infructueuses d&amp;#8217;authentification, le compte vis&amp;#233; est verrouill&amp;#233;. En admettant qu&amp;#8217;un attaquant remarque cette contre-mesure, il pourra par exemple surveiller l&amp;#8217;activit&amp;#233; des responsables (t&amp;#233;l&amp;#233;phone, site web, connaissances personnelles, etc.) et attendre qu&amp;#8217;ils soient absents. Le moment venu, il d&amp;#233;clenchera le dispositif de contre-mesures en tentant de se connecter avec tous les comptes importants de l&amp;#8217;entreprise, provoquant d&amp;#232;s lors un d&amp;#233;ni de service en bonne et due forme. &lt;/P&gt;
&lt;P&gt;Bien que le principe de confidentialit&amp;#233; des donn&amp;#233;es soit maintenu, le principe de disponibilit&amp;#233; ne serait plus d&amp;#8217;actualit&amp;#233; dans la mesure o&amp;#249; les vrais titulaires des comptes ne pourraient plus effectuer leurs t&amp;#226;ches.&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Contre-attaque#2: protection contre le spam, un serveur de messagerie renvoie un message d&amp;#8217;erreur pour indiquer qu&amp;#8217;il a re&amp;#231;u du spam&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;Ici, l&amp;#8217;exemple est pris sur un cas concret o&amp;#249; l&amp;#8217;administrateur souhaite &amp;#8216;manifester&amp;#8217; aux spammeurs qu&amp;#8217;il a correctement suivi toutes les &amp;#233;tapes de s&amp;#233;curisation de son serveur. Un message &amp;#224; caract&amp;#232;re &amp;#8220;Votre courrier est du spam. Nous n&amp;#8217;en voulons pas.&amp;#8221; est renvoy&amp;#233; aux exp&amp;#233;diteurs de courrier consid&amp;#233;r&amp;#233; comme ind&amp;#233;sirable. Nous sommes ici dans une mesure agissant sur l&amp;#8217;axe d&amp;#8217;int&amp;#233;grit&amp;#233; de l&amp;#8217;information: le serveur est optimis&amp;#233; pour ne fournir que de l&amp;#8217;information utile et &amp;#8216;vraie&amp;#8217; &amp;#224; ses utilisateurs.&lt;/P&gt;
&lt;P&gt;Si un attaquant remarque cette fonctionnalit&amp;#233;, il pourra d&amp;#233;clencher l&amp;#8217;envoi massif de courriers ind&amp;#233;sirables sur le serveur en ne jouant non pas sur le contenu &amp;#8216;variable&amp;#8217; mais sur l&amp;#8217;exp&amp;#233;diteur variable et inexistant: le serveur de messagerie se retrouvera d&amp;#232;s lors rapidement avec une queue de messages cons&amp;#233;quente s&amp;#8217;il n&amp;#8217;est pas prot&amp;#233;g&amp;#233; contre cette situation.&lt;/P&gt;
&lt;P&gt;Bien que le principe d&amp;#8217;int&amp;#233;grit&amp;#233; soit maintenu, c&amp;#8217;est ici encore le principe de disponibilit&amp;#233; qui s&amp;#8217;en retrouve touch&amp;#233;, pour une contre-mesure n&amp;#8217;apportant peut &amp;#234;tre pas autant qu&amp;#8217;elle ne le devrait&amp;#8230;&lt;/P&gt;
&lt;DIV class=storycontent&gt;
&lt;P&gt;&lt;EM&gt;Contre-attaque#3: le message de dissuasion&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;J&amp;#8217;ai choisi cet exemple pour son ambigu&amp;#239;t&amp;#233;: un message de dissuasion peut-il &amp;#234;tre consid&amp;#233;r&amp;#233; comme une contre-attaque ou contre-mesure ? Dans la mesure o&amp;#249; le message 1) est &amp;#233;mis suite &amp;#224; une attaque 2) a pour r&amp;#244;le de dissuader l&amp;#8217;attaquant de retenter une prochaine attaque, il peut s&amp;#8217;interpr&amp;#233;ter comme une contre-attaque. Cependant, s&amp;#8217;il s&amp;#8217;agit d&amp;#8217;une &amp;#8216;phase&amp;#8217; d&amp;#8217;attaque (dans le cadre d&amp;#8217;un processus encha&amp;#238;nant plusieurs &amp;#233;tapes) cette contre-attaque peut s&amp;#8217;av&amp;#233;rer &amp;#234;tre une contre-mesure.&lt;/P&gt;
&lt;P&gt;Quel message serait le plus dissuasif ?&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
L&amp;#8217;acc&amp;#232;s &amp;#224; ce service est r&amp;#233;serv&amp;#233; &amp;#224; un personnel seul autoris&amp;#233;. Toute tentative fructueuse ou non d&amp;#8217;acc&amp;#232;s &amp;#8230;blablabla&amp;#8230; vertu des articles ..blabla&amp;#8230;du code p&amp;#233;nal&amp;#8230; d&amp;#233;nonc&amp;#233; aux autorit&amp;#233;s comp&amp;#233;tentes ..blabla. 
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;ou&amp;#8230;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
Une erreur s&amp;#8217;est produite au sein de l&amp;#8217;application. Nous vous prions de bien vouloir nous excuser pour ce d&amp;#233;sagr&amp;#233;ment. Vous serez redirig&amp;#233; dans quelques secondes sur la page d&amp;#8217;accueil de la section actuellement visit&amp;#233;e. &lt;/BLOCKQUOTE&gt;
&lt;P&gt;ou: &lt;/P&gt;
&lt;BLOCKQUOTE&gt;
Erreur. 
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;ou finalement, et il n&amp;#8217;y a pas de texte type pour cela, rediriger l&amp;#8217;utilisateur vers la page d&amp;#8217;accueil de l&amp;#8217;application.&lt;/P&gt;
&lt;P&gt;Le premier message est clairement provocateur, &amp;#224; la limite du d&amp;#233;fi. Je ne saurais que de conseiller de l&amp;#8217;&amp;#233;viter.&lt;/P&gt;
&lt;P&gt;Contrairement aux apparences, les trois &amp;#8220;messages&amp;#8221; suivants sont en revanche &amp;#233;galement des contre-mesures. Qualifi&amp;#233;es de &amp;#8216;psychologiques&amp;#8217;, ces messages n&amp;#8217;entrent pas en mati&amp;#232;re avec l&amp;#8217;attaquant mais lui indiquent soit 1) que le site se sent responsable de l&amp;#8217;erreur (vol de notori&amp;#233;t&amp;#233;), 2) le site remarque les situations incorrectes mais n&amp;#8217;y accorde pas plus d&amp;#8217;importance et 3) l&amp;#8217;application se fout totalement des attaques et il n&amp;#8217;est pas possible de se rendre compte via l&amp;#8217;ext&amp;#233;rieur si une attaque a &amp;#233;t&amp;#233; d&amp;#233;cel&amp;#233;e ou non. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Conclusion&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Beaucoup de blabla mais peu de concret pour cet article. Il peut &amp;#234;tre cependant utile de ne pas oublier les trois points de responsabilit&amp;#233; de l&amp;#8217;application (d&amp;#233;tecter, se d&amp;#233;fendre, et contre-attaquer) et d&amp;#8217;en avoir quelques exemples en t&amp;#234;te. De plus, il ne semble pas y avoir de solution miracle. Le bon dosage reste une question de sensations et surtout, de besoins. &lt;/P&gt;
&lt;P&gt;Il s&amp;#8217;agira ici plut&amp;#244;t de se focaliser sur la phase d&amp;#8217;&amp;#233;laboration des charges/sp&amp;#233;cifications de l&amp;#8217;application &amp;#224; concevoir afin de d&amp;#233;terminer de quelle mani&amp;#232;re et jusqu&amp;#8217;&amp;#224; quel niveau l&amp;#8217;application sera elle-m&amp;#234;me responsable de sa propre s&amp;#233;curit&amp;#233;. &lt;/P&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=46280" width="1" height="1"&gt;</description></item><item><title>"Oeufs de pâques" (easter eggs) PHP</title><link>http://dotnetjunkies.com/WebLog/afontes/archive/2004/11/30/34231.aspx</link><pubDate>Tue, 30 Nov 2004 09:54:00 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:34231</guid><dc:creator>saphyr</dc:creator><slash:comments>0</slash:comments><comments>http://dotnetjunkies.com/WebLog/afontes/comments/34231.aspx</comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/afontes/commentrss.aspx?PostID=34231</wfw:commentRss><description>&lt;P&gt;Plus connus sous le nom anglophone 'Easter Egg', l'oeuf de P&amp;#226;ques repr&amp;#233;sente une fonctionnalit&amp;#233; non document&amp;#233;e d'un programme informatique. Par une s&amp;#233;rie de manipulations bien pr&amp;#233;cises, il est alors possible de d&amp;#233;clencher un comportement 'inhabituel' &amp;#224; l'application concern&amp;#233;e.&lt;/P&gt;
&lt;P&gt;Certains d&amp;#233;veloppeurs utilisent ce genre de subtilit&amp;#233; pour faire passer un message du genre "je l'ai fait" ou d'autres messages plus moqueurs (envers un autre d&amp;#233;veloppeur par exemple)* voire m&amp;#234;me des fonctionnalit&amp;#233;s jusque-l&amp;#224; inconnues, telles que le jeu enti&amp;#232;rement en 3d dans la suite bureautique Office.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Easter Eggs PHP&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Pour en revenir au coeur du sujet, des pol&amp;#233;miques sont lanc&amp;#233;es depuis quelques jours sur les EE se trouvant dans PHP. Trois (quatre pour les pointilleux) Easter Eggs ont &amp;#233;t&amp;#233; identifi&amp;#233;s depuis quelques temps, chacun permettant d'afficher un logo ou une image&amp;nbsp;&amp;#224; caract&amp;#232;re ludique. L'acc&amp;#232;s est simple: il suffit de trouver un site utilisant la technologie PHP et de passer une querystring particuli&amp;#232;re dans l'URL pour que le moteur PHP ne retourne qu'une image.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;La probl&amp;#233;matique s&amp;#233;curit&amp;#233;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Dans les cadres d'application de m&amp;#233;thodologies ou normes orient&amp;#233;es qualit&amp;#233;/s&amp;#233;curit&amp;#233;, la pr&amp;#233;sence d'oeufs de P&amp;#226;ques y est formellement interdite. Les motifs pr&amp;#233;cis restaient n&amp;#233;anmoins flous et l'on d&amp;#233;passait rarement le cadre du "on en sait jamais ce que cela peut d&amp;#233;clencher", "ce genre de fonctionnalit&amp;#233; peut avoir un co&amp;#251;t associ&amp;#233; cach&amp;#233;", etc. &lt;/P&gt;
&lt;P&gt;En ce qui concerne les oeufs de P&amp;#226;ques mentionn&amp;#233;s ci-dessus, nous avons un exemple concret du danger que peuvent repr&amp;#233;senter ce genre de d&amp;#233;marche. L'un de ces oeufs de P&amp;#226;ques donne l'acc&amp;#232;s aux 'credits', une liste des personnes ayant contribu&amp;#233; de pr&amp;#232;s ou de loin au d&amp;#233;veloppement de la technologie PHP. L'autre donne l'acc&amp;#232;s &amp;#224; une image repr&amp;#233;sentant un d&amp;#233;veloppeur portant des baguettes &amp;#224; sa bouche...&lt;/P&gt;
&lt;P&gt;Malheureusement, ou heureusement pour certain(e)s, ces deux oeufs de P&amp;#226;ques ont &amp;#233;volu&amp;#233; dans le temps. La liste de cr&amp;#233;dits est d&amp;#233;pendante dans certains cas de la version de PHP install&amp;#233;e sur le serveur, similairement en ce qui concerne l'image, pouvant repr&amp;#233;senter, selon les versions,&amp;nbsp; un chien, ou le d&amp;#233;veloppeur lui-m&amp;#234;me.&lt;/P&gt;
&lt;P&gt;Les risques sont ici clairement identifiables: ces "easter eggs" initialement con&amp;#231;us &amp;#224; des fins anodines offrent aux &amp;#233;ventuels pirates un vecteur simple d'identification de version dans de nombreux cas. L'erreur ayant &amp;#233;t&amp;#233; ici non pas de fournir ces easter eggs mais de les "am&amp;#233;liorer" au fil du temps.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Se prot&amp;#233;ger contre les easter eggs...&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Usuellement, ce n'est pas possible. Rares sont les cas o&amp;#249; des options explicites permettent de d&amp;#233;sactiver ce genre de fonctionnalit&amp;#233;s. Les concepteurs de PHP d&amp;#233;rogent &amp;#224; la r&amp;#232;gle en ayant fourni une variable configurable 'expose_php' dans le fichier de configuration php.ini. Il fallait le savoir tout de m&amp;#234;me..&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Pour en savoir plus...&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.eggheaven2000.com/"&gt;http://www.eggheaven2000.com/&lt;/A&gt;&amp;nbsp;(oeufs de P&amp;#226;ques c&amp;#233;lebres dans les applications informatiques)&lt;BR&gt;&lt;A href="http://www.dvdeastereggs.com/"&gt;http://www.dvdeastereggs.com/&lt;/A&gt;&amp;nbsp;(autres oeufs de P&amp;#226;ques, dans les DVD cette fois)&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Et vous ?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Allez, main droite lev&amp;#233;e, jurez-vous solenellement que vous n'avez plac&amp;#233; ou ne placerez jamais d'oeufs de P&amp;#226;ques dans vos applications ? ;)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;*: si vous utilisez Internet Explorer en cet instant pr&amp;#233;cis, saisissez: 'about:mozilla'&amp;nbsp;(sans les apostrophes)&amp;nbsp;dans votre barre de recherche et vous constaterez un Easter Egg.&lt;/P&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=34231" width="1" height="1"&gt;</description></item><item><title>Checklist sécurité et méthodes pour développeur</title><link>http://dotnetjunkies.com/WebLog/afontes/archive/2004/11/10/31553.aspx</link><pubDate>Wed, 10 Nov 2004 17:58:00 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:31553</guid><dc:creator>saphyr</dc:creator><slash:comments>0</slash:comments><comments>http://dotnetjunkies.com/WebLog/afontes/comments/31553.aspx</comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/afontes/commentrss.aspx?PostID=31553</wfw:commentRss><description>&lt;DIV class=storycontent&gt;
&lt;P&gt;- &amp;#8220;Tu ne veux pas faire une compilation de tous ces petits trucs dont t&amp;#8217;arr&amp;#234;tes pas de parler ?&amp;#8221;&lt;BR&gt;- &amp;#8220;C&amp;#8217;est &amp;#224; dire ?&amp;#8221;&lt;BR&gt;- &amp;#8220;Genre tout ce qui touche &amp;#224; la s&amp;#233;curit&amp;#233;, aux m&amp;#233;thodes, tes trucs de principes l&amp;#224; genre prog d&amp;#233;fensive ou lazy prog parce que l&amp;#224; &amp;#224; force c&amp;#8217;est tous des trucs que je comprends sur le moment mais j&amp;#8217;oublie apr&amp;#232;s coup!&amp;#8221;&lt;BR&gt;- &amp;#8220;Ah&amp;#8230; Je veux bien prendre des notes chaque fois que je me souviens d&amp;#8217;un truc int&amp;#233;ressant mais l&amp;#224; comme &amp;#231;a devoir mettre sur papier tous ces d&amp;#233;tails , d&amp;#233;sol&amp;#233; mais pas trop le temps!&amp;#8221;&lt;BR&gt;- &amp;#8220;Bah, &amp;#231;a ira aussi&amp;#8230; Et tu vas les mettre o&amp;#249; ?&amp;#8221;&lt;BR&gt;- &amp;#8220;Le mieux est que je mette &amp;#231;a quelque part sur le net, comme &amp;#231;a d&amp;#8217;autres (dont moi) pourraient peut &amp;#234;tre en profiter. (r&amp;#233;flexion) Je sais o&amp;#249; je vais les mettre!&amp;#8221;&lt;BR&gt;- &amp;#8220;O&amp;#249; &amp;#231;a ?&amp;#8221;&lt;BR&gt;- &amp;#8220;Dans ton c&amp;#8230; oups! (sale r&amp;#233;flexe! merci les amis!)&amp;#8230; Je cr&amp;#233;&amp;#233; une nouvelle cat&amp;#233;gorie &amp;#8216;checklist&amp;#8217; sur mon blog. Petit &amp;#224; petit elle se compl&amp;#233;tera et &amp;#231;a fera une compilation des &amp;#8220;trucs &amp;#224; savoir&amp;#8221; dans le d&amp;#233;veloppement web.&amp;#8221;&lt;BR&gt;- &amp;#8220;Ok saph! merci saph! t&amp;#8217;es un dieu saph! trop kewl saph!&amp;#8221;&lt;BR&gt;- &amp;#8220;ouais bon &amp;#231;a va hein!&amp;#8221;&lt;/P&gt;
&lt;P&gt;;) &lt;/P&gt;&lt;/DIV&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=31553" width="1" height="1"&gt;</description></item><item><title>Console d'administration de site web : simple ou pas ?</title><link>http://dotnetjunkies.com/WebLog/afontes/archive/2004/11/07/31266.aspx</link><pubDate>Sun, 07 Nov 2004 16:38:00 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:31266</guid><dc:creator>saphyr</dc:creator><slash:comments>0</slash:comments><comments>http://dotnetjunkies.com/WebLog/afontes/comments/31266.aspx</comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/afontes/commentrss.aspx?PostID=31266</wfw:commentRss><description>&lt;P&gt;Dans les commentaires de l'un de mes r&amp;#233;cents articles est abord&amp;#233;e la question de l' "accessibilit&amp;#233;" d'un logiciel en ce qui concerne la r&amp;#233;solution de pannes, la configuration et toute l'administration associ&amp;#233;e. Cela m'a rappel&amp;#233; un mandat r&amp;#233;cent dans lequel j'ai &amp;#233;t&amp;#233; impliqu&amp;#233;,&amp;nbsp;o&amp;#249;&amp;nbsp;cette question s'est pos&amp;#233;e.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Un projet louable...&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;L'objectif ? R&amp;#233;aliser un extranet tr&amp;#232;s orient&amp;#233; CMS avec une interface d'administration 'moul&amp;#233;e' dans la partie publique. Pas de 'zone administrative' visuellement parlant, juste des petits points rouges op&amp;#233;rationnels aparaissant ci et l&amp;#224; dans le site public lorsque l'on est authentifi&amp;#233;. Le mot d'ordre est clair: rendre l'administration EXTREMEMENT accessible et simple pour le plus commun de mortels!&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;La d&amp;#233;mo...&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Lorsque nous avons fait la d&amp;#233;monstration &amp;#224; une cliente, une gentille dame, un peu plus de 50 ans et surfeuse occasionnelle, elle a &amp;#233;t&amp;#233; capable de cr&amp;#233;er un menu, lui assigner un mod&amp;#232;le de logique en choissant 'bulletins d'actualit&amp;#233;s' et d'y ajouter un bulletin. &lt;/P&gt;
&lt;P&gt;Le chef de projet a consid&amp;#233;r&amp;#233; cela comme une &amp;#233;norme r&amp;#233;ussite; j'ai consid&amp;#233;r&amp;#233; cela comme un &amp;#233;norme &amp;#233;chec. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;L'acc&amp;#232;s &amp;#224; la connaissance&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;J'estime qu'une interface d'administration ne doit justement pas &amp;#234;tre trop simple et trop accessible. Elle doit n&amp;#233;cessiter des comp&amp;#233;tences et des connaissances sp&amp;#233;cifiques; celles-ci, pouvant &amp;#234;tre si on le souhaite 'simples' &amp;#224; acqu&amp;#233;rir , mais cette comp&amp;#233;tence doit n&amp;#233;anmoins &amp;#234;tre 'acquise' d'une mani&amp;#232;re ou d'une autre.&lt;/P&gt;
&lt;P&gt;Certains de mes projets touchent de pr&amp;#232;s ou de loin un concept tr&amp;#232;s &amp;#224; la mode: le knowledge management (KM) ou gestion de la connaissance si vous pr&amp;#233;f&amp;#233;rez. Je ne vais pas m'&amp;#233;taler longtemps sur l'explication de ce concept mais juste tenir compte d'un point critique dans le concept de KM: un bon syst&amp;#232;me KM est normalement capable de d&amp;#233;livrer l'information souhait&amp;#233;e &amp;#224; la bonne personne , sans qu'elle ne la demande explicitement, et de mani&amp;#232;re &amp;#224; ce qu'elle puisse l'exploiter. &lt;/P&gt;
&lt;P&gt;Je suis tr&amp;#232;s sensible &amp;#224; cela. C'est sympa d'une mani&amp;#232;re: cela peut sans doute permettre &amp;#224; une entreprise de se prot&amp;#233;ger contre la perte de connaissances associ&amp;#233;e &amp;#224; la perte d'un collaborateur. Mais ce dernier deviendrait donc encore plus rempla&amp;#231;able qu'il ne l'&amp;#233;tait d&amp;#233;j&amp;#224;!&lt;/P&gt;
&lt;P&gt;Revenons-en&amp;nbsp;&amp;#224; ce projet d'extranet... &lt;/P&gt;
&lt;P&gt;En voyant cette dame toute honorable qu'elle puisse &amp;#234;tre administrer un syst&amp;#232;me que j'ai r&amp;#233;alis&amp;#233;, je me suis senti quelque peu insult&amp;#233; et en danger. Une partie non n&amp;#233;gligeable des revenus de d'une petite soci&amp;#233;t&amp;#233; par exemple est r&amp;#233;alis&amp;#233;e gr&amp;#226;ce aux formations et aux phases d'int&amp;#233;gration.En simplifiant &amp;#233;norn&amp;#233;ment les processus de maintenance et d'administration, cette marge se r&amp;#233;duit fortement. Dans l'exemple ci-dessus, une matin&amp;#233;e a suffit alors qu'en moyenne un &amp;#224; trois jours sont n&amp;#233;cessaires. &lt;/P&gt;
&lt;P&gt;Il n'y a que dans un cas que j'imagine cette tournure souhaitable: lorsqu'une entreprise r&amp;#233;alise trop de ventes et qu'elle se retrouve d&amp;#233;pass&amp;#233;e par les demandes en formation, qu'elle doit r&amp;#233;ussir &amp;#224; rendre l'utilisation de son produit suffisament simple pour qu'elle ne lui pose plus de soucis et qu'elle puisse se concentrer &amp;#224; 100% sur l'am&amp;#233;lioration de ce produit qui "marche si bien". Mais l&amp;#224;, ce n'est pas le cas, c'&amp;#233;tait un client, pour une r&amp;#233;alisation, juste comme &amp;#231;a.&lt;/P&gt;
&lt;P&gt;L&amp;#224; o&amp;#249; l'un verrait "cool, elle a r&amp;#233;ussi &amp;#224; faire &amp;#231;a toute seule", moi j'ai vu : "pffff, deux jours et demi de formation perdus, ma commission mensuelle qui baisse".&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Le responsable d'un site 'administr&amp;#233;' peut-il &amp;#234;tre n'importe qui?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Finalement, je tenais &amp;#224; parler des responsables de sites dits "administr&amp;#233;s", que ce soit des sites internet, des intranets, ou des extranets. Quel est l'avantage r&amp;#233;el pour eux que le processus d'administration soit extr&amp;#234;mement simple et accessible ? Pour moi cette question est sujette &amp;#224; pol&amp;#233;mique. &lt;/P&gt;
&lt;P&gt;Regardons la zone administrative des blogs .Text. Rien &amp;#224; voir avec la partie publique: le contenu est r&amp;#233;organis&amp;#233;, la navigation est repens&amp;#233;e, les options sont nombreuses et il faut aller dans la section d&amp;#233;di&amp;#233;e pour pouvoir effectuer une op&amp;#233;ration de gestion de contenu. Pourquoi n'y t'il pas un simple 'add category'&amp;nbsp;&amp;#224; la fin de la liste des cat&amp;#233;gories ? Pourquoi n'y a t'il pas un petit symbole aparaissant &amp;#224; c&amp;#244;t&amp;#233; de chaque cat&amp;#233;gorie, qui lorsqu'il est cliqu&amp;#233; nous m&amp;#232;ne sur sa page d'&amp;#233;dition ? Pourquoi ne pas simplement cliquer sur le titre du blog et qu'il passe en mode '&amp;#233;dition' ? Non. Il faut choisir entre les diff&amp;#233;rentes sections: posts, categories, options, links, etc. Il faut 'aller' vers la zone de gestion sp&amp;#233;cifique &amp;#224; ce que l'on souhaite g&amp;#233;rer: il faut 'savoir' ce que l'on souhaite g&amp;#233;rer. &lt;/P&gt;
&lt;P&gt;Je trouve cela bien. &lt;/P&gt;
&lt;P&gt;Faisons l'allusion avec la m&amp;#233;decine. Pourrions-nous esp&amp;#233;rer que les robots d'intervention chirurgicales soient maniables et facilement g&amp;#233;rables par n'importe quel touriste souhaitant se faire une ponction &amp;#224; l'intestin lui-m&amp;#234;me ? Non. Ces robots ne sont pas pens&amp;#233;s dans cette id&amp;#233;e. Je crois m&amp;#234;me savoir que les formations &amp;#224; leur utilisation se chiffrent &amp;#224; 4 z&amp;#233;ros, factur&amp;#233;s &amp;#224; l'&amp;#233;tablissement hospitalier d&amp;#233;sireux de 'moderniser' son infrastructure. &lt;/P&gt;
&lt;P&gt;Le domaine du droit ? Les masgistrats s'amusent-ils &amp;#224; mettre en place des proc&amp;#233;dures simplifi&amp;#233;es permettant au citoyen moyen de se g&amp;#233;rer lui-m&amp;#234;me juridiquement parlant devant un tribunal ? Faut pas d&amp;#233;conner: cela n'arrivera jamais!&lt;/P&gt;
&lt;P&gt;Quelle diff&amp;#233;rence entre simplicit&amp;#233; et simplicit&amp;#233; ? Prenons l'exemple d'un d&amp;#233;veloppement Dotnet sur Visual Studio. Pour modifier l'impl&amp;#233;mentaiton d'une m&amp;#233;thode il faudra: ouvrir le fichier source contenant cette m&amp;#233;thode, le modifier, l'enregistrer et demander une recompilation.&lt;/P&gt;
&lt;P&gt;L'op&amp;#233;ration est simple pour un d&amp;#233;veloppeur. Elle est inaccessible pour un autre utilisateur. Voil&amp;#224; la simplicit&amp;#233; vers laquelle je suis d'accord de me diriger en tant que d&amp;#233;veloppeur: je suis pr&amp;#234;t &amp;#224; aller vers une simplification de mes r&amp;#233;alisation mais une simplification rendant les t&amp;#226;ches plus 'simples' &amp;#224; r&amp;#233;aliser pour les personnes charg&amp;#233;es de les r&amp;#233;aliser. &lt;/P&gt;
&lt;P&gt;Je reste en revanche totalement contre le fait de simplifier un syst&amp;#232;me au point que m&amp;#234;me une personne n'&amp;#233;tant pas sp&amp;#233;cialement d&amp;#233;sign&amp;#233;e ou form&amp;#233;e, pour effectuer des t&amp;#226;ches administratives par exemple, puisse le faire.&lt;/P&gt;
&lt;P&gt;Qui est d'accord, qui ne l'est pas ? Arriverez-vous &amp;#224; me faire changer d'avis ?&amp;nbsp;;)&lt;/P&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=31266" width="1" height="1"&gt;</description></item><item><title>Appliquer la défense en profondeur dans les sites de gestion de contenu</title><link>http://dotnetjunkies.com/WebLog/afontes/archive/2004/10/31/30550.aspx</link><pubDate>Sun, 31 Oct 2004 17:17:00 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:30550</guid><dc:creator>saphyr</dc:creator><slash:comments>1</slash:comments><comments>http://dotnetjunkies.com/WebLog/afontes/comments/30550.aspx</comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/afontes/commentrss.aspx?PostID=30550</wfw:commentRss><description>&lt;P&gt;Les sites communautaires se qualifient par leur contenu g&amp;#233;r&amp;#233; par plusieurs utilisateurs distincts. Dans la majeure partie de ces sites, la notion de propri&amp;#233;t&amp;#233; y est fortement repr&amp;#233;sent&amp;#233;e, l&amp;#8217;on verra presque dans tous les cas que tout contenu est rattach&amp;#233; &amp;#224; un utilisateur.&lt;/P&gt;
&lt;DIV class=storycontent&gt;
&lt;P&gt;La non-application du principe de d&amp;#233;fense en profondeur sur certaines op&amp;#233;rations de ce type de sites peut placer toute la structure dans un niveau de s&amp;#233;curit&amp;#233; critique. Je vous propose ici une petite &amp;#233;tude de cas mettant le doigt l&amp;#224; o&amp;#249; &amp;#231;a fait mal, &amp;#224; savoir, les risques encourus suite au non-respect de ce principe sur un site communautaire&amp;#8230;&lt;/P&gt;
&lt;P&gt;&lt;A id=more-8&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Les sites de gestion de contenu&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Les sites de gestion de contenu se qualifient par leur contenu g&amp;#233;r&amp;#233; par plusieurs utilisateurs distincts. &lt;/P&gt;
&lt;P&gt;Dans la majeure partie de ces sites, la notion de propri&amp;#233;t&amp;#233; y est fortement repr&amp;#233;sent&amp;#233;e, l&amp;#8217;on verra presque dans tous les cas que tout contenu est rattach&amp;#233; &amp;#224; un utilisateur.&lt;/P&gt;
&lt;P&gt;La gestion d&amp;#8217;un contenu regroupe usuellement les op&amp;#233;rations suivantes : &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;cr&amp;#233;er un contenu 
&lt;LI&gt;modifier ce contenu 
&lt;LI&gt;supprimer ce contenu 
&lt;LI&gt;modifier l&amp;#8217;&amp;#233;tat de ce contenu (approuver, refuser, publier, etc.)&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Presque tout portail communautaire entre &amp;#233;galement sous la coupole de la &amp;#8216;gestion de contenu&amp;#8217; telle qu&amp;#8217;elle est d&amp;#233;finie dans cet article. Les risques pr&amp;#233;sent&amp;#233;s ici s&amp;#8217;y appliquent donc &amp;#233;galement.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Le principe de d&amp;#233;fense en profondeur&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Le principe de d&amp;#233;fense en profondeur a &amp;#233;t&amp;#233; d&amp;#233;crit dans un pr&amp;#233;c&amp;#233;dent article, je ne m&amp;#8217;y attarde donc pas ici. Juste une petite phrase r&amp;#233;sumant la chose: &lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;CENTER&gt;&amp;#171; La d&amp;#233;fense en profondeur consiste &amp;#224; ne pas faire &lt;BR&gt;confiance aux mesures de s&amp;#233;curit&amp;#233; prises &amp;#224; des couches &lt;BR&gt;sup&amp;#233;rieures ou adjacentes. &amp;#187;&lt;/CENTER&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;L&amp;#8217;&amp;#233;tude de cas: ToutesLesAnnonces.com&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;ToutesLesAnnonces.com est une plate-forme gratuite de publication de petites annonces. Une seule instance de l&amp;#8217;application est install&amp;#233;e et elle est capable de g&amp;#233;rer l&amp;#8217;ensemble des annonces actives sur le serveur. &lt;/P&gt;
&lt;P&gt;Il est possible &amp;#224; tout internaute de s&amp;#8217;enregistrer sur le site, puis de cr&amp;#233;er ses propres petites annonces.&lt;/P&gt;
&lt;P&gt;Le site permet plusieurs op&amp;#233;rations de base sur les petites annonces :&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;cr&amp;#233;er une annonce 
&lt;LI&gt;publier une annonce 
&lt;LI&gt;modifier une annonce 
&lt;LI&gt;supprimer une annonce&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;La conception du site permet, au travers d&amp;#8217;une zone membres, de g&amp;#233;rer les petites annonces dont l&amp;#8217;utilisateur est le propri&amp;#233;taire.&lt;/P&gt;
&lt;P&gt;Le flux suivant s&amp;#8217;applique &amp;#224; la modification d&amp;#8217;une petite annonce : &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;afficher la liste des annonces cr&amp;#233;es par soi-m&amp;#234;me 
&lt;LI&gt;s&amp;#233;lectionner une annonce 
&lt;LI&gt;cliquer sur &amp;#8216;modifier&amp;#8217; 
&lt;LI&gt;modifier le texte de l&amp;#8217;annonce puis cliquer sur &amp;#8216;confirmer&amp;#8217;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Un d&amp;#233;veloppeur n&amp;#8217;appliquant pas la d&amp;#233;fense en profondeur r&amp;#233;alisera le pseudo-code suivant : &lt;/P&gt;
&lt;DIV class="code"&gt;
&amp;#8212;listeannonces.php&amp;#8212;&lt;BR&gt;
sql = " SELECT * FROM annonces WHERE proprietaire = $idProprietaire ";&lt;BR&gt;&lt;BR&gt;
//affichage des annonces dont il est propri&amp;#233;taire&lt;BR&gt;&lt;BR&gt;
&amp;#8212;modifierannonce.asp&amp;#8212;&lt;BR&gt;
annID = Request.Form("id")&lt;BR&gt;
annTexte = Request.Form("corps")&lt;BR&gt;
sql = " UPDATE annonces " &amp;amp; _&lt;BR&gt;
" SET texte = '" &amp;amp; annTexte &amp;amp; "'" &amp;amp; _&lt;BR&gt;
" WHERE id = " &amp;amp; annID&lt;BR&gt;&lt;BR&gt;
&amp;#8216;* modification de l&amp;#8217;annonce
&lt;/DIV&gt;
&lt;P&gt;Vous saisissez o&amp;#249; se trouve le probl&amp;#232;me ?&lt;/P&gt;
&lt;P&gt;Le second script, modifierannonce.asp, part du principe que l&amp;#8217;utilisateur a demand&amp;#233; la suppression d&amp;#8217;une annonce lui appartenant. O&amp;#249; est la garantie ?&lt;/P&gt;
&lt;P&gt;Voici ce que le script devrait faire si le d&amp;#233;veloppeur applique la d&amp;#233;fense en profondeur :&lt;/P&gt;
&lt;DIV class="code"&gt;
&amp;#8212;modifierannonce.asp&amp;#8212;&lt;BR&gt;
annID = Request.Form("id")&lt;BR&gt;
annTexte = Request.Form("corps")&lt;BR&gt;
sql = "UPDATE annonces " &amp;amp; _&lt;BR&gt;
" SET texte = '" &amp;amp; annTexte &amp;amp; "'" &amp;amp; _&lt;BR&gt;
" WHERE id = " &amp;amp; annID &amp;amp; _&lt;BR&gt;
" AND proprietaire = " &amp;amp; idProprietaire&lt;BR&gt;&lt;BR&gt;
'* modification de l&amp;#8217;annonce
&lt;/DIV&gt;
&lt;P&gt;Comme vous pouvez le remarquer, la requ&amp;#234;te a &amp;#233;t&amp;#233; modifi&amp;#233;e afin d&amp;#8217;emp&amp;#234;cher la modification d&amp;#8217;une annonce par une autre personne que son propri&amp;#233;taire.&lt;/P&gt;
&lt;P&gt;Cette modification n&amp;#8217;a pas demand&amp;#233; un effort cons&amp;#233;quent mais apporte n&amp;#233;anmoins un avantage non n&amp;#233;gligeable en mati&amp;#232;re de s&amp;#233;curit&amp;#233; de l&amp;#8217;application : il n&amp;#8217;est plus possible de modifier le contenu d&amp;#8217;un autre propri&amp;#233;taire, sans r&amp;#233;ussir &amp;#224; d&amp;#233;jouer le m&amp;#233;canisme d&amp;#8217;authentification.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Conclusion&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Cet exemple peut quelque peu para&amp;#238;tre sommaire au premier abord. Je peux n&amp;#233;anmoins confirmer qu&amp;#8217;au moins quatre sites consid&amp;#233;r&amp;#233;s comme &amp;#8216;majeurs&amp;#8217; dans la r&amp;#233;gion Suisse-France sont en cet instant pr&amp;#233;cis vuln&amp;#233;rables &amp;#224; ce genre de faille, et ceci dans les cat&amp;#233;gories suivantes : &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;portail de rencontres et contacts en ligne 
&lt;LI&gt;portail de petites annonces 
&lt;LI&gt;service de &amp;#8220;bureau virtuel&amp;#8221; 
&lt;LI&gt;forums de discussions sur des sites journalistiques&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Sur le trigramme CIA (cf article principes fondamentaux de s&amp;#233;curit&amp;#233;) nous sommes ici dans une situation de violation d&amp;#8217;int&amp;#233;grit&amp;#233;. Si j&amp;#8217;applique les risques associ&amp;#233;s &amp;#224; cet axe de s&amp;#233;curit&amp;#233; aux quatre cat&amp;#233;gories de sites ci-dessus : &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;modification et suppression de profils 
&lt;LI&gt;divulgation de propos personnels, ou &amp;#224; caract&amp;#232;re ill&amp;#233;gal 
&lt;LI&gt;mise &amp;#224; d&amp;#233;faut de profils de personnes 
&lt;LI&gt;modification de conditions d&amp;#8217;acceptation des autres contenus afin de revaloriser son propre contenu 
&lt;LI&gt;d&amp;#233;formation des donn&amp;#233;es 
&lt;LI&gt;usurpation d&amp;#8217;id&amp;#233;es (faire croire que le contenu est l&amp;#8217;expression des id&amp;#233;es d&amp;#8217;une tierce personne) 
&lt;LI&gt;d&amp;#233;tournement de flux (redirection automatique sur un contenu souhait&amp;#233;) 
&lt;LI&gt;autres risques &amp;#8230;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Alors, messieurs les d&amp;#233;veloppeurs ou messieurs les responsables de la s&amp;#233;curit&amp;#233;, peut &amp;#234;tre serait-il temps de vous fixer quelques objectifs pour la semaine &amp;#224; venir ! ; ) &lt;/P&gt;&lt;/DIV&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=30550" width="1" height="1"&gt;</description></item><item><title>La défense en profondeur</title><link>http://dotnetjunkies.com/WebLog/afontes/archive/2004/10/31/30549.aspx</link><pubDate>Sun, 31 Oct 2004 17:15:00 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:30549</guid><dc:creator>saphyr</dc:creator><slash:comments>0</slash:comments><comments>http://dotnetjunkies.com/WebLog/afontes/comments/30549.aspx</comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/afontes/commentrss.aspx?PostID=30549</wfw:commentRss><description>&lt;P&gt;Le principe de d&amp;#233;fense en profondeur est l&amp;#8217;un de mes pr&amp;#233;f&amp;#233;r&amp;#233;s. Pourquoi ? C&amp;#8217;est le plus facile &amp;#224; oublier, et le plus vicieux &amp;#224; attaquer dans le cadre des services orient&amp;#233;s web. Ce bulletin n&amp;#8217;est publi&amp;#233; qu&amp;#8217;&amp;#224; titre formel, afin de d&amp;#233;finir le principe. Je traiterai de ce principe dans diverses &amp;#233;tudes de cas prochainement publi&amp;#233;es.&lt;/P&gt;
&lt;P&gt;&lt;A id=more-6&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Voici une phrase tr&amp;#232;s r&amp;#233;ductrice sur le principe de d&amp;#233;fense en profondeur mais r&amp;#233;sumant &amp;#224; elle seule toute l&amp;#8217;id&amp;#233;e : &lt;/P&gt;
&lt;P&gt;
&lt;CENTER&gt;&amp;#171; La d&amp;#233;fense en profondeur consiste &amp;#224; ne pas faire &lt;BR&gt;confiance aux mesures de s&amp;#233;curit&amp;#233; prises &amp;#224; des couches &lt;BR&gt;sup&amp;#233;rieures ou adjacentes. &amp;#187;&lt;/CENTER&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=30549" width="1" height="1"&gt;</description></item><item><title>Les couches de sécurité</title><link>http://dotnetjunkies.com/WebLog/afontes/archive/2004/10/31/30548.aspx</link><pubDate>Sun, 31 Oct 2004 17:12:00 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:30548</guid><dc:creator>saphyr</dc:creator><slash:comments>0</slash:comments><comments>http://dotnetjunkies.com/WebLog/afontes/comments/30548.aspx</comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/afontes/commentrss.aspx?PostID=30548</wfw:commentRss><description>&lt;DIV class=storycontent&gt;
&lt;P&gt;Le principe des couches de s&amp;#233;curit&amp;#233; est assez intuitif mais doit &amp;#234;tre tout de m&amp;#234;me formalis&amp;#233; dans ce document, vu que d&amp;#8217;autres principes se basent eux-m&amp;#234;mes sur celui-ci.&lt;/P&gt;
&lt;P&gt;
&lt;CENTER&gt;&amp;#171; L&amp;#8217;acc&amp;#232;s a toute couche du syst&amp;#232;me implique le &lt;BR&gt;passage par la couche sup&amp;#233;rieure &amp;#224; cette couche. &amp;#187;&lt;/CENTER&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Un exemple&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Pour acc&amp;#233;der &amp;#224; son contenu, un intranet d&amp;#8217;entreprise exige que tout utilisateur soit correctement authentifi&amp;#233;. Nous pourrions r&amp;#233;sumer ce besoin en deux couches : &lt;/P&gt;
&lt;BLOCKQUOTE&gt;
Couche 1 : authentification utilisateur&lt;BR&gt;Couche 0 : acc&amp;#232;s au contenu
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Le principe des couches de s&amp;#233;curit&amp;#233; exige que pour acc&amp;#233;der &amp;#224; la couche 0 (le centre), il faille pr&amp;#233;alablement avoir pass&amp;#233; les conditions &amp;#233;mises par la couche 1.&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
SI l&amp;#8217;autorisation est accord&amp;#233;e par la couche 1&lt;BR&gt;ALORS ex&amp;#233;cuter l&amp;#8217;op&amp;#233;ration de la couche 0&lt;BR&gt;SINON refuser l&amp;#8217;acc&amp;#232;s &amp;#224; la couche 0 
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Chaque technologie de d&amp;#233;veloppement web propose ses propres m&amp;#233;canismes d&amp;#8217;impl&amp;#233;mentation de couches, virtuelles ou r&amp;#233;elles.&lt;/P&gt;
&lt;P&gt;L&amp;#8217;on pourra utiliser les directives d&amp;#8217;inclusions en technologie ASP classique ou les commandes &amp;#8216;include&amp;#8217; en technologie PHP. Dans ces cas, il s&amp;#8217;agira de couches virtuelles dans la mesure o&amp;#249; il n&amp;#8217;y a pas &amp;#8216;logiquement&amp;#8217; parlant d&amp;#8217;acc&amp;#232;s sur une couche inf&amp;#233;rieure mais acc&amp;#232;s &amp;#224; &amp;#8216;la suite&amp;#8217; du code : &lt;/P&gt;
&lt;DIV class="code"&gt;
&amp;#8212;index.php&amp;#8212;&lt;BR&gt;&amp;lt; ?php include("inc_checkauth.php"); ?&amp;gt;&lt;BR&gt;&amp;lt; ?php &lt;BR&gt;//afficher contenu&lt;BR&gt;?&amp;gt;&lt;BR&gt;
&lt;/DIV&gt;
&lt;P&gt;D&amp;#8217;autres technologie telles que ASP.Net proposent des couches r&amp;#233;elles par exemple avec la m&amp;#233;thode Application_BeginRequest() du fichier Global.asax. Cette m&amp;#233;thode est ex&amp;#233;cut&amp;#233;e avant d&amp;#8217;appeler la page demand&amp;#233;e. Le document lui-m&amp;#234;me n&amp;#8217;inclut donc aucun code pouvant permettre de d&amp;#233;tecter qu&amp;#8217;un module d&amp;#8217;authentification est appliqu&amp;#233; avant son appel.&lt;/P&gt;
&lt;P&gt;Dans la mesure du possible, il sera souhaitable de toujours privil&amp;#233;gier l&amp;#8217;utilisation de couches r&amp;#233;elles plut&amp;#244;t que virtuelles. &lt;/P&gt;
&lt;/DIV&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=30548" width="1" height="1"&gt;</description></item><item><title>Les principes fondamentaux de sécurité</title><link>http://dotnetjunkies.com/WebLog/afontes/archive/2004/10/31/30547.aspx</link><pubDate>Sun, 31 Oct 2004 17:11:00 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:30547</guid><dc:creator>saphyr</dc:creator><slash:comments>3</slash:comments><comments>http://dotnetjunkies.com/WebLog/afontes/comments/30547.aspx</comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/afontes/commentrss.aspx?PostID=30547</wfw:commentRss><description>&lt;P&gt;La s&amp;#233;curit&amp;#233; informatique repose sur plusieurs fondements. Ci-dessous, je vous propose d&amp;#8217;approcher les sept fondements qui nous concerneront le plus dans le cadre des prochains articles publi&amp;#233;s sur ce blog. &lt;/P&gt;
&lt;P&gt;Cette liste n&amp;#8217;est bien entendu pas exhaustive et n&amp;#8217;est pas encore standardis&amp;#233;e (&amp;#224; moins que j'aie mal cherch&amp;#233; l'info?). Elle peut donc varier selon la personne &amp;#224; qui vous vous adressez. &lt;/P&gt;
&lt;P&gt;Quoi qu&amp;#8217;il en soit, elle constitue MA liste de base, nerf de guerre sur lequel s&amp;#8217;articuleront tous les articles li&amp;#233;s &amp;#224; la s&amp;#233;curit&amp;#233;. Il y aura d&amp;#8217;autres principes trait&amp;#233;s, tels que la d&amp;#233;fense en profondeur, l&amp;#8217;obscurit&amp;#233;, la confiance ou encore retomber sur ses pattes. Mais ceux-ci seront pour plus tard!&lt;/P&gt;
&lt;P&gt;&lt;A id=more-5&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Triade CIA&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;La triade CIA regroupe trois principes essentiels au maintien de la s&amp;#233;curit&amp;#233; d&amp;#8217;un syst&amp;#232;me d&amp;#8217;information. &lt;/P&gt;
&lt;P&gt;Les trois principes sont respectivement: la confidentialit&amp;#233; (Confidentiality), l&amp;#8217;int&amp;#233;grit&amp;#233; (Integrity) et la disponibilit&amp;#233; (Availability) des informations.&lt;/P&gt;
&lt;P&gt;Certaines nouvelles formations dans la s&amp;#233;curit&amp;#233; informatique proposent un quatri&amp;#232;me principe (CIAA): l&amp;#8217;authentification (Authentication).&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Principe de confidentialit&amp;#233;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Alice envoie un message &amp;#224; Bob. Qu&amp;#8217;est-ce qui garantit &amp;#224; Alice que personne d&amp;#8217;autre que Bob n&amp;#8217;a pu ou ne pourra consulter le message ?&lt;/P&gt;
&lt;P&gt;La confidentialit&amp;#233; regroupe tous les m&amp;#233;canismes permettant d&amp;#8217;assurer qu&amp;#8217;une information ne pourrait &amp;#234;tre accessible et exploitable que par les personnes autoris&amp;#233;es. &lt;/P&gt;
&lt;P&gt;La confidentialit&amp;#233; regroupe tous les m&amp;#233;canismes permettant d&amp;#8217;assurer qu&amp;#8217;une information ne pourrait &amp;#234;tre accessible et exploitable que par les personnes autoris&amp;#233;es. &lt;/P&gt;
&lt;P&gt;Ce principe peut &amp;#234;tre consid&amp;#233;r&amp;#233; de mani&amp;#232;re autonome, par exemple lorsque l&amp;#8217;on traite de cryptographie sur un syst&amp;#232;me de fichiers, ou de mani&amp;#232;re combin&amp;#233;e, au principe d&amp;#8217;authentification.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Int&amp;#233;grit&amp;#233;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Alice envoie un message &amp;#224; Bob. Qu&amp;#8217;est-ce qui garantit &amp;#224; Bob que ce message n&amp;#8217;a pas &amp;#233;t&amp;#233; modifi&amp;#233; durant son acheminement ? &lt;/P&gt;
&lt;P&gt;Le principe d&amp;#8217;int&amp;#233;grit&amp;#233; vise &amp;#224; assurer qu&amp;#8217;une donn&amp;#233;e soit &amp;#8216;r&amp;#233;elle&amp;#8217;. Cette donn&amp;#233;e est cens&amp;#233;e repr&amp;#233;senter l&amp;#8217;&amp;#233;tat d&amp;#8217;une entit&amp;#233;, d&amp;#8217;un syst&amp;#232;me ou m&amp;#234;me d&amp;#8217;une pens&amp;#233;e ou id&amp;#233;e, &amp;#224; un instant donn&amp;#233;.&lt;/P&gt;
&lt;P&gt;Les contr&amp;#244;les d&amp;#8217;int&amp;#233;grit&amp;#233; visent &amp;#224; garantir qu&amp;#8217;une donn&amp;#233;e est repr&amp;#233;sentative d&amp;#8217;un certain mod&amp;#232;le et qu&amp;#8217;elle n&amp;#8217;a pas subi de modification ou m&amp;#234;me d&amp;#233;t&amp;#233;rioration entre deux contr&amp;#244;les. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Disponibilit&amp;#233;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Alice envoie un message &amp;#224; Bob. Qu&amp;#8217;est-ce qui garantit &amp;#224; Alice que Bob pourra consulter ce message dans les d&amp;#233;lais pr&amp;#233;vus ?&lt;/P&gt;
&lt;P&gt;Le principe de disponibilit&amp;#233; vise &amp;#224; fournir les donn&amp;#233;es ou les informations lorsque les utilisateurs en ont besoin.&lt;/P&gt;
&lt;P&gt;En clair : la disponibilit&amp;#233; regroupe toutes les mesures visant &amp;#224; permettre &amp;#224; un service d&amp;#8217;assurer ses responsabilit&amp;#233;s sans interruption ou du moins, lorsqu&amp;#8217;il doit &amp;#234;tre disponible. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Authentification&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Bob souhaite r&amp;#233;cup&amp;#233;rer le message d&amp;#8217;Alice. Comment peut-il prouver qu&amp;#8217;il est bel et bien Bob ?&lt;/P&gt;
&lt;P&gt;L&amp;#8217;authentification consiste &amp;#224; s&amp;#8217;assurer qu&amp;#8217;un utilisateur est celui qu&amp;#8217;il pr&amp;#233;tend &amp;#234;tre.&lt;/P&gt;
&lt;P&gt;Le principe d&amp;#8217;authentification se d&amp;#233;cline en un sous-principe : l&amp;#8217;identification. &lt;/P&gt;
&lt;P&gt;L&amp;#8217;identification consiste &amp;#224; identifier un utilisateur de mani&amp;#232;re unique.&lt;/P&gt;
&lt;P&gt;Quelques exemples pour diff&amp;#233;rencier l&amp;#8217;identification de l&amp;#8217;authentification :&lt;/P&gt;
&lt;P&gt;Syst&amp;#232;me d&amp;#8217;authentification &amp;#8216;mot de passe&amp;#8217; : vous ins&amp;#233;rez votre carte bancaire dans un distributeur de billets. La carte sert &amp;#224; identifier le client (et ses comptes) sur lequel le distributeur va effectuer les op&amp;#233;rations. Le NIP (Num&amp;#233;ro d&amp;#8217;Identification Personnel) vous permet de vous authentifier au distributeur : vous lui prouvez que vous &amp;#234;tes bel et bien le titulaire de la carte.&lt;/P&gt;
&lt;P&gt;Syst&amp;#232;me d&amp;#8217;authentification &amp;#8216;passeport&amp;#8217; : votre carte d&amp;#8217;identit&amp;#233; porte votre nom. Elle vous identifie au sein du fichier de la population d&amp;#8217;un pays. Sur votre carte d&amp;#8217;identit&amp;#233; se trouve votre photo. Lorsque vous montrez votre carte d&amp;#8217;identit&amp;#233; &amp;#224; un douanier, il vous identifie par votre nom et vous authentifie par deux facteurs : le fait que vous poss&amp;#233;diez cette carte et par le fait que vous soyez la personne repr&amp;#233;sent&amp;#233;e sur la photo.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Autorisation&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Anita d&amp;#233;sire envoyer un message &amp;#224; Bob. A t&amp;#8217;elle le droit de le faire ?&lt;/P&gt;
&lt;P&gt;L&amp;#8217;autorisation (ou permission) consiste &amp;#224; pouvoir d&amp;#233;terminer si une op&amp;#233;ration est autoris&amp;#233;e ou non.&lt;BR&gt;Le m&amp;#233;canisme d&amp;#8217;autorisation doit normalement &amp;#234;tre en mesure de r&amp;#233;pondre aux questions suivantes :&lt;/P&gt;
&lt;UL&gt;
&lt;P&gt;&lt;/P&gt;
&lt;LI&gt;quel acteur d&amp;#233;sire effectuer une op&amp;#233;ration ? 
&lt;P&gt;&lt;/P&gt;
&lt;LI&gt;quelle op&amp;#233;ration souhaite t&amp;#8217;il effectuer ? 
&lt;P&gt;&lt;/P&gt;
&lt;LI&gt;a t&amp;#8217;il le droit d&amp;#8217;effectuer cette op&amp;#233;ration ? oui, ou non. &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Non-r&amp;#233;pudiation&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Bob a re&amp;#231;u un message d&amp;#8217;Alice. Alice pr&amp;#233;tend qu&amp;#8217;elle ne l&amp;#8217;a pas envoy&amp;#233;. Qui a raison ?&lt;/P&gt;
&lt;P&gt;Le principe de non-r&amp;#233;pudiation regroupe les mesures permettant d&amp;#8217;affirmer avec certitude quel est ou quels sont les auteurs d&amp;#8217;une op&amp;#233;ration. &lt;/P&gt;
&lt;P&gt;Tr&amp;#232;s utilis&amp;#233; dans le domaine financier, les mesures de non-r&amp;#233;pudiation permettent par exemple d&amp;#8217;emp&amp;#234;cher que des investisseurs ne disent &amp;#8220;ce n&amp;#8217;est pas moi qui ai achet&amp;#233; &amp;#231;a, on s&amp;#8217;est fait passer pour moi!&amp;#8221; apr&amp;#232;s que leur action n&amp;#8217;ait chut&amp;#233;&amp;#8230;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Audit - journalisation&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Alice a envoy&amp;#233; un message &amp;#224; Bob le 8 f&amp;#233;vrier 2004 &amp;#224; 8 heures 34 minutes et 27 secondes. Bob a consult&amp;#233; ce message 4 minutes plus tard, &amp;#224; savoir, le 8 f&amp;#233;vrier 2004 &amp;#224; 8 heures 38 minutes et 31 secondes pr&amp;#233;cises.&lt;/P&gt;
&lt;P&gt;QUI a fait QUOI et QUAND ?&lt;/P&gt;
&lt;P&gt;La journalisation permet de r&amp;#233;pondre &amp;#224; cette question, et souvent bien d&amp;#8217;autres ! &lt;/P&gt;
&lt;P&gt;Les m&amp;#233;canismes de journalisation regroupent toutes les techniques permettant de r&amp;#233;cup&amp;#233;rer et stocker les informations d&amp;#8217;activit&amp;#233; de mani&amp;#232;re exploitable. &lt;/P&gt;
&lt;P&gt;L&amp;#8217;audit entre en compte dans les m&amp;#233;canismes de non-r&amp;#233;pudiation (ne pas pouvoir nier que l&amp;#8217;on a fait quelque chose): &amp;#171; &amp;#231;a a eu lieu, c&amp;#8217;est m&amp;#234;me &amp;#233;crit ici &amp;#187; ou encore lors d&amp;#8217;analyses statistiques par exemple : &amp;#171; Combien de personnes ont demand&amp;#233; telle ressource durant les premi&amp;#232;res heures apr&amp;#232;s le passage &amp;#224; la nouvelle ann&amp;#233;e ? &amp;#187;.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Ce qu&amp;#8217;il faut retenir ici&amp;#8230;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Un syst&amp;#232;me ou application consid&amp;#233;r&amp;#233; comme &amp;#8220;s&amp;#233;curis&amp;#233;&amp;#8221; doit au minimum pouvoir fournir les services suivants : &lt;/P&gt;
&lt;UL&gt;
&lt;P&gt;&lt;/P&gt;
&lt;LI&gt;Emp&amp;#234;cher la consultation de donn&amp;#233;es par des acteurs &amp;#224; qui elles ne sont pas destin&amp;#233;es; 
&lt;P&gt;&lt;/P&gt;
&lt;LI&gt;Conserver et fournir les donn&amp;#233;es dans l&amp;#8217;&amp;#233;tat o&amp;#249; elles ont &amp;#233;t&amp;#233; laiss&amp;#233;es par leur propri&amp;#233;taire; 
&lt;P&gt;&lt;/P&gt;
&lt;LI&gt;Fournir les donn&amp;#233;es lorsque les acteurs en ont besoin ; 
&lt;P&gt;&lt;/P&gt;
&lt;LI&gt;Identifier et authentifier les acteurs agissant sur le syst&amp;#232;me; 
&lt;P&gt;&lt;/P&gt;
&lt;LI&gt;D&amp;#233;cider si oui ou non une op&amp;#233;ration est autoris&amp;#233;e &amp;#224; un acteur; 
&lt;P&gt;&lt;/P&gt;
&lt;LI&gt;Savoir QUAND a &amp;#233;t&amp;#233; effectu&amp;#233;e une op&amp;#233;ration et par QUI de mani&amp;#232;re certaine&lt;/LI&gt;&lt;/UL&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=30547" width="1" height="1"&gt;</description></item><item><title>A quel moment se mettre à documenter son projet ?</title><link>http://dotnetjunkies.com/WebLog/afontes/archive/2004/10/31/30546.aspx</link><pubDate>Sun, 31 Oct 2004 17:08:00 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:30546</guid><dc:creator>saphyr</dc:creator><slash:comments>0</slash:comments><comments>http://dotnetjunkies.com/WebLog/afontes/comments/30546.aspx</comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/afontes/commentrss.aspx?PostID=30546</wfw:commentRss><description>&lt;DIV class=code&gt;Build complete &amp;#8211; 0 errors, 948 warnings&lt;BR&gt;Building satellite assemblies&amp;#8230;&lt;BR&gt;&lt;/DIV&gt;
&lt;P&gt;Voci la r&amp;#233;ponse. Un projet initialement pr&amp;#233;vu pour n&amp;#8217;&amp;#234;tre utilis&amp;#233; qu&amp;#8217;en interne, dans un langage qu&amp;#8217;aucun autre collaborateur que moi ne comprend, et qui ne serait jamais vendu est depuis peu devenu un projet d&amp;#233;velopp&amp;#233; en &amp;#233;quipe, par des collaborateurs comprenant le langage et qui va &amp;#234;tre vendu &amp;#224; un client.&lt;/P&gt;
&lt;P&gt;Le message ci-dessus est la r&amp;#233;ponse de Visual Studio &amp;#224; ce changement soudain de direction: 948 entr&amp;#233;es de documentations &amp;#224; saisir dans les jours &amp;#224; venir pour se d&amp;#233;barrasser de ces messages intrusifs!&lt;/P&gt;
&lt;P&gt;Moralit&amp;#233;: dans vos propri&amp;#233;t&amp;#233;s de projet Visual Studio, entrez un nom de fichier dans la case &amp;#8216;XML Documentation File&amp;#8217;. Cela vous forcera d&amp;#232;s le d&amp;#233;but &amp;#224; rentrer dans les rangs des d&amp;#233;veloppeurs orient&amp;#233;s qualit&amp;#233; et qui documentent tout leur code &lt;IMG alt=;) src="http://www.nxtg.net/blogs/pragmatic/wp-images/smilies/icon_wink.gif"&gt;&lt;/P&gt;
&lt;P&gt;Si vous avez d&amp;#233;j&amp;#224; un projet en cours, essayez, vous verrez, c&amp;#8217;est jouissif. &lt;/P&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=30546" width="1" height="1"&gt;</description></item><item><title>Google: premiers signes de faiblesse ?</title><link>http://dotnetjunkies.com/WebLog/afontes/archive/2004/10/26/29873.aspx</link><pubDate>Tue, 26 Oct 2004 19:40:00 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:29873</guid><dc:creator>saphyr</dc:creator><slash:comments>0</slash:comments><comments>http://dotnetjunkies.com/WebLog/afontes/comments/29873.aspx</comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/afontes/commentrss.aspx?PostID=29873</wfw:commentRss><description>&lt;P&gt;Les donn&amp;#233;es sont minces, beaucoup de suppositions mais peu d&amp;#8217;affirmations: le c&amp;#233;l&amp;#232;bre moteur de recherche dont la r&amp;#233;putation n&amp;#8217;est plus &amp;#224; (d&amp;#233;)faire semble afficher ces derniers jours des signes de faiblesse qualitative.&lt;/P&gt;
&lt;P&gt;Plusieurs responsables marketing ou communication charg&amp;#233;s de surveiller leur ranking se posent des questions: positionnement d&amp;#233;gringolant, voire inexistant, requ&amp;#234;tes cibl&amp;#233;es ne proposant que des r&amp;#233;sultats dispers&amp;#233;s ou encore un manque de coh&amp;#233;sion entre le contenu demand&amp;#233; et les r&amp;#233;sultats obtenus.&lt;/P&gt;
&lt;P&gt;Quelqu&amp;#8217;un aurait-il une source s&amp;#251;re d&amp;#8217;informations sur le sujet ?&lt;/P&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=29873" width="1" height="1"&gt;</description></item><item><title>10 étapes pour sécuriser un serveur SQL 2000</title><link>http://dotnetjunkies.com/WebLog/afontes/archive/2004/10/25/29619.aspx</link><pubDate>Mon, 25 Oct 2004 16:18:00 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:29619</guid><dc:creator>saphyr</dc:creator><slash:comments>0</slash:comments><comments>http://dotnetjunkies.com/WebLog/afontes/comments/29619.aspx</comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/afontes/commentrss.aspx?PostID=29619</wfw:commentRss><description>&lt;P&gt;Microsoft propose un r&amp;#233;sum&amp;#233; compos&amp;#233; de dix &amp;#233;tapes cl&amp;#233;s &amp;#224; mettre en place afin de s&amp;#233;curiser un serveur de bases de donn&amp;#233;es SQL 2000. L&amp;#8217;article original est disponible &lt;A href="http://www.microsoft.com/sql/techinfo/administration/2000/security/securingsqlserver.asp" target=_blank&gt;ici&lt;/A&gt; (version anglaise).&lt;/P&gt;
&lt;P&gt;Pour les anglophobes, un r&amp;#233;sum&amp;#233; de ces dix &amp;#233;tapes est disponible ci-dessous.&lt;BR&gt;&lt;A id=more-64&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;1. Installer le service pack le plus r&amp;#233;cent&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;SQL 2000 Serveur en est au service pack 3a. Si vous ne le saviez pas encore, il est encore temps de faire cette mise &amp;#224; jour au plus vite &amp;#224; partir du portail &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyId=90DCD52C-0488-4E46-AFBF-ACACE5369FA3&amp;amp;displaylang=fr" target=_blank&gt;SQL 2000&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;2. Tester le niveau de s&amp;#233;curit&amp;#233; avec l&amp;#8217;outil gratuit MBSA&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;L&amp;#8217;outil Microsoft Baseline Security Analyser est gratuitement propos&amp;#233; en t&amp;#233;l&amp;#233;chargement par Microsoft. Cet outil effectue un contr&amp;#244;le exhaustif du niveau de s&amp;#233;curit&amp;#233; de votre syst&amp;#232;me et de la qualit&amp;#233; du param&amp;#233;trage de vos applications Microsoft. L&amp;#8217;utilisation de cet outil sur un serveur SQL 2000 portera certainement un bon nombre de propositions &amp;#224; votre attention telles que:&lt;/P&gt;
&lt;UL&gt;
&lt;P&gt;&lt;/P&gt;
&lt;LI&gt;les droits accord&amp;#233;s au compte invit&amp;#233; 
&lt;P&gt;&lt;/P&gt;
&lt;LI&gt;la qualit&amp;#233; des mots de passe des comptes d&amp;#233;clar&amp;#233;s 
&lt;P&gt;&lt;/P&gt;
&lt;LI&gt;int&amp;#233;grit&amp;#233; des droits accord&amp;#233;s aux diff&amp;#233;rents r&amp;#244;les 
&lt;P&gt;&lt;/P&gt;
&lt;LI&gt;param&amp;#233;trage incorrect des services associ&amp;#233;s au serveur 
&lt;P&gt;&lt;/P&gt;
&lt;LI&gt;&amp;#8230; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Pour r&amp;#233;cup&amp;#233;rer l&amp;#8217;outil MBSA: &lt;A href="http://www.microsoft.com/technet/security/tools/mbsahome.mspx" target=_blank&gt;Accueil MBSA (us)&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;3. Pr&amp;#233;f&amp;#233;rez le mode d&amp;#8217;authentification Windows&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Lorsque c&amp;#8217;est possible, placez le serveur en configuration &amp;#8216;authentification Windows&amp;#8217;. Les authentifications b&amp;#233;n&amp;#233;ficieront d&amp;#232;s lors de m&amp;#233;canismes am&amp;#233;lior&amp;#233;s d&amp;#8217;&amp;#233;change de mots de passes, et les mots de passes eux-m&amp;#234;mes n&amp;#8217;auront pas besoin d&amp;#8217;&amp;#234;tre indiqu&amp;#233;s en clair dans vos applications clientes.&lt;/P&gt;
&lt;P&gt;Pour passer un serveur SQL 2000 en authentification int&amp;#233;gr&amp;#233;e Windows, r&amp;#233;alisez les trois &amp;#233;tapes suivantes:&lt;/P&gt;
&lt;UL&gt;
&lt;P&gt;&lt;/P&gt;
&lt;LI&gt;Lancez le gestionnaire de serveurs SQL 2000 
&lt;P&gt;&lt;/P&gt;
&lt;LI&gt;Clic droit sur le serveur concern&amp;#233;, puis &amp;#8216;propri&amp;#233;t&amp;#233;s 
&lt;P&gt;&lt;/P&gt;
&lt;LI&gt;Dans l&amp;#8217;onglet &amp;#8217;s&amp;#233;curit&amp;#233;&amp;#8217;, puis dans la section &amp;#8216;Authentification&amp;#8217;, activez l&amp;#8217;authentification int&amp;#233;gr&amp;#233;e Windows &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;4. Isolez physiquement le serveur et sauvegardez r&amp;#233;guli&amp;#232;rement ses donn&amp;#233;es&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Tout est dans la directive.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;5. Utilisez un mot de passe complexe pour le compte sa&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Remarque personnelle: faites-le aussi pour les autres comptes. Ca ne mange pas pain.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;6. Limitez le niveau de privil&amp;#232;ge des services associ&amp;#233;s au serveur&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Deux services sont principalement associ&amp;#233;s au serveur: le serveur de bases de donn&amp;#233;es lui-m&amp;#234;me ainsi que l&amp;#8217;agent (SQL Server Agent). Ces services permettent l&amp;#8217;ex&amp;#233;cution de commandes syst&amp;#232;mes. Lorsque de telles commandes sont lanc&amp;#233;es, elles sont associ&amp;#233;es au compte titulaire de l&amp;#8217;ex&amp;#233;cution du service. Si l&amp;#8217;administrateur ou le compte syst&amp;#232;me sont titulaires du service, toutes les commandes syst&amp;#232;mes lanc&amp;#233;es sont ex&amp;#233;cut&amp;#233;es avec leurs droits associ&amp;#233;s.&lt;/P&gt;
&lt;P&gt;Afin de pr&amp;#233;venir ce risque, il est conseill&amp;#233; de modifier les comptes titulaires de ces deux services et de pr&amp;#233;f&amp;#233;rer des comptes dot&amp;#233;s de droits utilisateurs simples.&lt;/P&gt;
&lt;P&gt;Attention cependant, dans certains cas bien pr&amp;#233;cis cette op&amp;#233;ration n&amp;#8217;est pas possible.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;7. Emp&amp;#234;chez l&amp;#8217;acc&amp;#232;s au serveur par l&amp;#8217;ext&amp;#233;rieur&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Si votre structure r&amp;#233;seau ne dispose pas encore d&amp;#8217;un pare-feu, il est grand temps de vous r&amp;#233;veiller. Si ce n&amp;#8217;est pas le cas, v&amp;#233;rifiez que le pare-feu refuse toute tentative de connexion sur les ports TCP 1433 et UDP 1434 du serveur SQL 2000.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;8. Utilisez le syst&amp;#232;me de fichiers NTFS&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Il est &amp;#233;galement possible d&amp;#8217;utiliser le syst&amp;#232;me de fichiers EFS (chiffrement transparent des fichiers). Veillez cependant &amp;#224; ne pas vous faire avoir: les donn&amp;#233;es sont chiffr&amp;#233;es selon une cl&amp;#233; associ&amp;#233;e au compte utilisateur titulaire des donn&amp;#233;es. En cas de perte de ce compte, toutes les donn&amp;#233;es seront perdues.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;9. Supprimez ou prot&amp;#233;gez l&amp;#8217;acc&amp;#232;s aux fichiers d&amp;#8217;installation&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;L&amp;#8217;installation du serveur g&amp;#233;n&amp;#232;re des fichiers inutiles s&amp;#8217;il n&amp;#8217;y a pas eu de probl&amp;#232;me particulier. C&amp;#8217;est le cas par exemple des fichiers logs. Consultez l&amp;#8217;article original pour obtenir les chemins pr&amp;#233;cis de ces fichiers. &lt;/P&gt;
&lt;P&gt;Sinon, Microsoft propose un outil gratuit, &lt;A href="http://support.microsoft.com/default.aspx?scid=KB;en-us;263968&amp;amp;" target=_blank&gt;Killpwd&lt;/A&gt;, pouvant effectuer ce travail pour vous en nettoyant les fichiers journaux de toute information critique.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;10. Auditez les connexions sur le serveur SQL 2000&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Il est important d&amp;#8217;avoir une trace des &amp;#233;v&amp;#233;nements lorsque l&amp;#8217;on souhaite mettre en place des mesures de s&amp;#233;curit&amp;#233;. Les &amp;#233;checs de connexion constituent une information particuli&amp;#232;rement importante, qui doit &amp;#234;tre surveill&amp;#233;e au possible.&lt;/P&gt;
&lt;P&gt;Pour activer cette journalisation, lancez le gestionnaire de serveurs SQL 2000, clic-droit sur le serveur concern&amp;#233;, puis &amp;#8216;propri&amp;#233;t&amp;#233;s&amp;#8217;. Dans l&amp;#8217;onglet &amp;#8217;s&amp;#233;curit&amp;#233;&amp;#8217;, section &amp;#8216;niveau d&amp;#8217;audit&amp;#8217;, activez l&amp;#8217;option &amp;#8216;auditer les &amp;#233;checs&amp;#8217;. &lt;/P&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=29619" width="1" height="1"&gt;</description></item><item><title>The server committed an HTTP protocol violation</title><link>http://dotnetjunkies.com/WebLog/afontes/archive/2004/10/15/28726.aspx</link><pubDate>Fri, 15 Oct 2004 22:41:00 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:28726</guid><dc:creator>saphyr</dc:creator><slash:comments>4</slash:comments><comments>http://dotnetjunkies.com/WebLog/afontes/comments/28726.aspx</comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/afontes/commentrss.aspx?PostID=28726</wfw:commentRss><description>&lt;DIV class=storycontent&gt;
&lt;P&gt;&amp;#8220;&lt;EM&gt;The underlying connection was closed: The server committed an HTTP protocol violation. &lt;/P&gt;
&lt;P&gt;Error reading URL: The underlying connection was closed: The server committed an HTTP protocol violation. &lt;BR&gt;Please try to validate this feed. If this feed validates as correct RSS, you can send an error report. &lt;/EM&gt;&amp;#8220;&lt;/P&gt;
&lt;P&gt;If you use an RSS feeds agregator like SharpReader, SauceReader or FeedReader, this error might sound familiar to you. Here is an explanation on how to prevent this&amp;#8230;&lt;/P&gt;
&lt;P&gt;&lt;A id=more-62&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;The issue&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;The HTTP header keys for example shoud specifically not include any spaces in their names. However, some web servers do not fully respect standards they&amp;#8217;re meant to.&lt;/P&gt;
&lt;P&gt;Applications running on the Dotnet framework and making heavy use of http requests usually use the &amp;#8220;httpWebRequest&amp;#8221; class, which encapsulates everything a web oriented developer could dream of. With all the recently issues related to security, the &amp;#8220;httpWebRequest&amp;#8221; class provides a self protection mechanism preventing it to accept HTTP answers which not fully qualify to the specifications.&lt;/P&gt;
&lt;P&gt;The common case is having a space in the &amp;#8216;content-length&amp;#8217; header key. The server actually returns a &amp;#8220;content length&amp;#8221; key, which, assuming no spaces are allowed, is considered as an attack vector (HTTP response split attack), thus, triggering a &amp;#8220;HTTP protocol violation error&amp;#8221; exception.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;The workaround&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;It is possible since the 1.1 SP 1 DotNet version (UPDATE: see comments for instructions prior to version 1.1, credits to Krys Oye) to disable this error check. (Un)Fortunately, DotNet allows you to modify some parameters directly through a simple text configuration file, thus not requiring the user to have some strong developer skills.&lt;/P&gt;
&lt;P&gt;I tested this on SharpReader and it immediatly unlocked all the &amp;#8216;red&amp;#8217; feeds I had.&lt;/P&gt;
&lt;P&gt;1. Create a file and name it like &amp;#8216;&lt;STRONG&gt;yourapplication.extension.config&lt;/STRONG&gt;&amp;#8216;. If for example you&amp;#8217;re using SharpReader, then create a file named &lt;STRONG&gt;&amp;#8216;SharpReader.exe.config&lt;/STRONG&gt;&amp;#8216;. &lt;/P&gt;
&lt;P&gt;2. Open this file with a notepad or any text-based editor and paste the following text in it:&lt;/P&gt;
&lt;DIV class=code&gt;&amp;lt;configuration&amp;gt;&lt;BR&gt;&amp;lt;system.net&amp;gt;&lt;BR&gt;&amp;lt;settings&amp;gt;&lt;BR&gt;&amp;lt;httpWebRequest useUnsafeHeaderParsing="true" /&amp;gt;&lt;BR&gt;&amp;lt;/settings&amp;gt;&lt;BR&gt;&amp;lt;/system.net&amp;gt;&lt;BR&gt;&amp;lt;/configuration&amp;gt; &lt;/DIV&gt;
&lt;P&gt;*: Be carefull: if you already see that file in the folder, edit it, and only insert the missing sections in it. Do not try to reproduce a second &amp;#8216;configuration&amp;#8217; area for example as it will invalidate that configuration file.&lt;/P&gt;
&lt;P&gt;3. Save it, then restart your application. That should work now.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Thanks to&amp;#8230;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;This workaround was found on &lt;A href="http://blogs.msdn.com/gzunino/archive/2004/09/05/225881.aspx" target=_blank&gt;Gille&amp;#8217;s weblog&lt;/A&gt;, thanks to him: I can keep my favourite SharpReader &lt;IMG alt=;) src="http://www.nxtg.net/is/wp-images/smilies/icon_wink.gif"&gt; &lt;/P&gt;&lt;/DIV&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=28726" width="1" height="1"&gt;</description></item><item><title>DNS Error messages with Wordpress admin</title><link>http://dotnetjunkies.com/WebLog/afontes/archive/2004/10/15/28725.aspx</link><pubDate>Fri, 15 Oct 2004 22:40:00 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:28725</guid><dc:creator>saphyr</dc:creator><slash:comments>0</slash:comments><comments>http://dotnetjunkies.com/WebLog/afontes/comments/28725.aspx</comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/afontes/commentrss.aspx?PostID=28725</wfw:commentRss><description>&lt;DIV class=storycontent&gt;
&lt;P&gt;There&amp;#8217;s a bug in Wordpress which prevents administrators to return into the wp-admin zone. Many conditions are required but I think some information I give hereby could help locating the critical path to reproduce it and also help working around it til it gets fixed. Below is a copy of a message sent to Wordpress support some minutes ago&amp;#8230;&lt;/P&gt;
&lt;P&gt;----&lt;/P&gt;
&lt;P&gt;&lt;A id=more-61&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Hi all !&lt;/P&gt;
&lt;P&gt;Some people noticed that there might be problems entering into the administrative section of a WP enabled site. They often tend to end in a DNS ERROR message, typically provided by Internet Explorer. &lt;/P&gt;
&lt;P&gt;I think I found some informations which might lead to this bug fix.&lt;/P&gt;
&lt;P&gt;I recently began having similar errors: DNS timeout, DNS error, and so on. Even when turning off http friendly messages option off would produce the same error so I guessed that would not be really an &amp;#8216;error&amp;#8217;.&lt;/P&gt;
&lt;P&gt;Web development security is my job so&amp;#8230; I can say that those errors already happened to me in during many audits. There&amp;#8217;s only one solution to find a bug like this: sniffing the packets and trapping all requests and replies coming from/going to the server. If you want to try this, you can install an http proxy tool such as Achilles or Paros (requiring Java VM installed on your workstation). &lt;/P&gt;
&lt;P&gt;Here is what I got: requesting an administrative page access leads into an infinite &amp;#8220;header location&amp;#8221; calls (response redirects) between auth.php and the requested page. &lt;/P&gt;
&lt;P&gt;I can&amp;#8217;t precisely enough isolate and reproduce the error yet, but I (almost sure) know that it is related to one factor: I have multiple blogs running on the same domain (www.nxtg.net) and this happens when I did some stuff as an admin in one of my blogs, then tried to switch to another blog as an admin.&lt;/P&gt;
&lt;P&gt;Reproduction path was not found yet, but I found the workaround: &lt;/P&gt;
&lt;P&gt;- explicitely logout when finishing your admin stuff&lt;BR&gt;or&lt;BR&gt;- delete your cookies&lt;/P&gt;
&lt;P&gt;One of those two actions will allow you to access the administrative pages again. &lt;/P&gt;
&lt;P&gt;Finally, I think the error is located into the cookie path or information stored in it. &lt;/P&gt;
&lt;P&gt;Hope this can help&amp;#8230;BTW, great great great job you&amp;#8217;re doing with WP!!! &lt;/P&gt;
&lt;P&gt;Cheers, regards, and all stuff&amp;#8230;&lt;/P&gt;
&lt;P&gt;.antoine &lt;/P&gt;
&lt;P&gt;----&lt;/P&gt;&lt;/DIV&gt;&lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=28725" width="1" height="1"&gt;</description></item><item><title>Petites réflexions sur les weblogues en entreprise</title><link>http://dotnetjunkies.com/WebLog/afontes/archive/2004/10/13/28380.aspx</link><pubDate>Wed, 13 Oct 2004 12:44:00 GMT</pubDate><guid isPermaLink="false">58df7014-fd75-437c-9641-150997716d1c:28380</guid><dc:creator>saphyr</dc:creator><slash:comments>0</slash:comments><comments>http://dotnetjunkies.com/WebLog/afontes/comments/28380.aspx</comments><wfw:commentRss>http://dotnetjunkies.com/WebLog/afontes/commentrss.aspx?PostID=28380</wfw:commentRss><description>&lt;A title="Petites r&amp;#233;flexions sur les weblogues en entreprise" href="http://www.padawan.info/fr/weblogue/petites_reflexions_sur_les_weblogues_en_entreprise.html" target=_blank&gt;Petites r&amp;#233;flexions sur les weblogues en entreprise&lt;/A&gt;, par Fran&amp;#231;ois Nonnenmacher &lt;img src="http://dotnetjunkies.com/WebLog/aggbug.aspx?PostID=28380" width="1" height="1"&gt;</description></item></channel></rss>