<?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>Le Blog du grand loup Zeur &#187; php</title>
	<atom:link href="http://blog.gaetan-grigis.eu/tag/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.gaetan-grigis.eu</link>
	<description>Le blog qui vous fait connaitre ce que vous savez déjà</description>
	<lastBuildDate>Tue, 17 Jan 2012 08:43:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>monter un serveur PHP en une ligne de commande (ou presque)</title>
		<link>http://blog.gaetan-grigis.eu/systeme/monter-un-serveur-php-en-une-ligne-de-commande-ou-presque/</link>
		<comments>http://blog.gaetan-grigis.eu/systeme/monter-un-serveur-php-en-une-ligne-de-commande-ou-presque/#comments</comments>
		<pubDate>Sat, 24 Apr 2010 09:45:22 +0000</pubDate>
		<dc:creator>Gaëtan</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[Système]]></category>
		<category><![CDATA[cgi-bin]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[serveur]]></category>
		<category><![CDATA[sh]]></category>

		<guid isPermaLink="false">http://blog.gaetan-grigis.eu/?p=795</guid>
		<description><![CDATA[Dans le genre &#171;&#160;news de webg33k&#160;&#187; en voici une &#8230; A la base, je cherchais à utiliser/écrire un serveur http en python (pas mal de classes existent dans le domaine) pour servir une page html bidon après un man in the middle avec redirection dnspoof sur le serveur http en question, au lieu de déployer [...]]]></description>
			<content:encoded><![CDATA[<p>Dans le genre &laquo;&nbsp;news de webg33k&nbsp;&raquo; en voici une &#8230;</p>
<p>A la base, je cherchais à utiliser/écrire un serveur http en python (pas mal de <a href="http://docs.python.org/library/basehttpserver.html">classes</a> existent dans le domaine) pour servir une page html bidon après un man in the middle avec redirection dnspoof sur le serveur http en question, au lieu de déployer l&#8217;artillerie lourde apache ou nginx.<br />
<span id="more-795"></span><br />
Après diverses recherche sur mon <a href="http://www.google.fr">ami</a>, je suis tombé sur : <a href="http://blog.rom1v.com/2009/12/creer-un-serveur-http-en-10-secondes/">créer un serveur http en 10 secondes</a> &#8230;</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">sudo</span> python -m SimpleHTTPServer <span class="nu0">80</span></div>
</li>
</ol>
</div>
<p>Créant ainsi un serveur http accessible sur : http://127.0.0.1/). Mais cette technique ne fournit que des fichiers statiques (ok c&#8217;est déjà pas mal &#8230; et c&#8217;est plus où moins ce que je cherchais).</p>
<p>Mais en lisant la doc, on peut trouver un &laquo;&nbsp;CGIHTTPServer&nbsp;&raquo;, c&#8217;est un serveur qui peut exécuter des scripts (python, perl, php, sh, &#8230;) et l&#8217;utilisation est similaire :</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">python -m CGIHTTPServer <span class="nu0">8080</span></div>
</li>
</ol>
</div>
<p>qui créera un serveur HTTP sur le dossier courant avec la possibilité d&#8217;éxecuter des scripts (EN CLI = ligne de commande) sur le port 8080 (accessible sur http://127.0.0.1:8080/).</p>
<p>ATTENTION, il ne faut pas executer le serveur avec un sudo (pour utiliser le port 80), car sinon, les scripts seront executés en root, ainsi pour le script php suivant (à mettre dans un dossier nommé &laquo;&nbsp;cgi-bin&nbsp;&raquo; dans le dossier courant d&#8217;éxecution de la commande, et faire un chmod +x et <span style="color: #ff0000;">nécessite l&#8217;installation du paquet php-cli</span>) :</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="co2">#!/usr/bin/php</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">&lt;?php</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">echo</span> <span class="st0">&quot;&quot;</span><span class="sy0">;</span><span class="co1">//pour signaler la fin des headers</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">echo</span> <span class="kw3">phpinfo</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
</ol>
</div>
<p><a href="http://blog.gaetan-grigis.eu/wp-content/uploads/2010/04/python-server.png"><img class="aligncenter size-full wp-image-796" title="python-server" src="http://blog.gaetan-grigis.eu/wp-content/uploads/2010/04/python-server.png" alt="" width="769" height="325" /></a><br />
 <br />
On remarque bien que le script a les droits root &#8230; donc à EVITER.</p>
<p>Il faut donc l&#8217;executer sur le port un port supérieur à 1024 (pour ne pas utiliser les droits root : 8080 est le port le plus courant dans ce genre de cas), puis effectuer une redirection de port via iptables qui permettra ici d&#8217;accéder au port 8080 du serveur en faisant une requête sur le port 80 :</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">sudo</span> iptables -t nat -A PREROUTING -p tcp &#8211;dport <span class="nu0">80</span> -j REDIRECT &#8211;to-ports <span class="nu0">8080</span></div>
</li>
</ol>
</div>
<p>(ne fonctionne pas pour l&#8217;adresse de loopback 127.0.0.1).</p>
<p>Si vous voulez exécuter d&#8217;autre type de script : sh, python, &#8230;, il suffit de les mettre dans le dossier cgi-bin et de faire un chmod +x dessus.</p>
<p>En python :</p>
<div class="geshi no python">
<ol>
<li class="li1">
<div class="de1"><span class="co1">#!/usr/bin/python</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">print</span> <span class="st0">&quot;&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">print</span> <span class="st0">&quot;les kikoolols attaquent!!!&quot;</span></div>
</li>
</ol>
</div>
<p>En bash : </p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="co0">#!/bin/bash</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">echo</span> <span class="st0">&quot;&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">echo</span> <span class="st0">&quot;les kikoolols attaquent!!!&quot;</span></div>
</li>
</ol>
</div>
<p>Ne pas oublier le premier print &laquo;&nbsp;&nbsp;&raquo; ou echo &laquo;&nbsp;&nbsp;&raquo;, qui indique la fin des headers HTTP. </p>
<p>Voilà &#8230; c&#8217;était le post inutile mais indispensable de la semaine <img src='http://blog.gaetan-grigis.eu/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>

                            <div id="aspdf">
                                <a href="http://blog.gaetan-grigis.eu/wp-content/plugins/as-pdf/generate.php?post=795">
                                    <span>Télécharger l'article au format PDF</span>
                                </a>
                            </div>
                        <hr /><h2>Articles similaires : </h2><ul><li><a href="http://blog.gaetan-grigis.eu/systeme/se-monter-un-environnement-de-developpement-lamp-rapidement/" rel="bookmark" title="Permanent Link: Se monter un environnement de developpement LAMP rapidement">Se monter un environnement de developpement LAMP rapidement</a></li><li><a href="http://blog.gaetan-grigis.eu/programmation/tor-proxy-et-randomiser-le-choix-des-serveurs-de-sortie/" rel="bookmark" title="Permanent Link: Tor Proxy et randomiser le choix des serveurs de sorties">Tor Proxy et randomiser le choix des serveurs de sorties</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/sortie-de-metasploit-32/" rel="bookmark" title="Permanent Link: Sortie de Metasploit 3.2">Sortie de Metasploit 3.2</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/primary-domain-controller-sous-linux/" rel="bookmark" title="Permanent Link: Primary Domain Controller sous Linux &#8230;">Primary Domain Controller sous Linux &#8230;</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/telecharger-sur-mu-via-bash/" rel="bookmark" title="Permanent Link: Telecharger sur MU via bash">Telecharger sur MU via bash</a></li></ul><hr /><small>Copyright &copy; 2008-2011 - Gaetan Grigis - <a href="http://blog.gaetan-grigis.eu">blog.gaetan-grigis.eu</a> </small>]]></content:encoded>
			<wfw:commentRss>http://blog.gaetan-grigis.eu/systeme/monter-un-serveur-php-en-une-ligne-de-commande-ou-presque/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Push Ip(hone&#124;od) en PHP en envoi &#171;&#160;batch&#160;&#187;</title>
		<link>http://blog.gaetan-grigis.eu/programmation/push-iphoneod-en-php-en-envoi-batch/</link>
		<comments>http://blog.gaetan-grigis.eu/programmation/push-iphoneod-en-php-en-envoi-batch/#comments</comments>
		<pubDate>Tue, 20 Apr 2010 17:37:03 +0000</pubDate>
		<dc:creator>Gaëtan</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[certificat]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[ipod]]></category>
		<category><![CDATA[push]]></category>

		<guid isPermaLink="false">http://blog.gaetan-grigis.eu/?p=790</guid>
		<description><![CDATA[Plop à tous &#8230; Un article en intraveineuse pour tenter de réanimer mon blog &#8230; Alors oui l&#8217;Iphone ça pue, c&#8217;est propriétaire, c&#8217;est moche et tout et tout, mais bon ça se répand comme la peste alors on fait avec :s. Qu&#8217;est ce que le push sur IPhone ?? L&#8217;envoi de messages depuis les services d&#8217;apple vers [...]]]></description>
			<content:encoded><![CDATA[<p>Plop à tous &#8230;</p>
<p>Un article en intraveineuse pour tenter de réanimer mon blog &#8230; Alors oui l&#8217;Iphone ça pue, c&#8217;est propriétaire, c&#8217;est moche et tout et tout, mais bon ça se répand comme la peste alors on fait avec :s.<br />
<span id="more-790"></span><br />
Qu&#8217;est ce que le push sur IPhone ?? L&#8217;envoi de messages depuis les services d&#8217;apple vers tout les Iphones inscrit à une application, ce qui permet aux développeurs d&#8217;applications IPhone d&#8217;envoyer des messages (en quasi temps réel) pour informer d&#8217;une mise à jour, faire ch**r son monde, &#8230;</p>
<p>L&#8217;implémentation est assez intéressante, puisque les envois se font avec des certificats via une connexion SSL.</p>
<p>Allons droit au but &#8230;</p>
<p>Tout d&#8217;abord, il faut avoir un compte chez Apple (<a href="http://developer.apple.com/iphone/index.action">bouark</a> &#8230;), il faudra générer un certificat x509 (qui servira selon toute vraisemblance à signer les certificats des applications &#8230; à ne pas perdre donc).</p>
<p>Puis lors de l&#8217;ajout des fonctionnalités de push à notre appli, récupérer le certificat propre à l&#8217;application que l&#8217;on développe. Le certificat de notre application est nommé : aps_developer_identity.cer (une fois téléchargé depuis leur portail), mais pour l&#8217;utiliser, il faut changer de format, et supprimer le mot de passe, ce qu&#8217;il est possible de faire avec le script suivant (en le mettant dans le même dossier que le certificat) :</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="co0">#!/bin/bash</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co0">#Generate PEM from cer</span></div>
</li>
<li class="li1">
<div class="de1">openssl x509 -inform der -<span class="kw1">in</span> aps_developer_identity.cer -out apns-dev-cert.pem</div>
</li>
<li class="li1">
<div class="de1"><span class="co0">#In case of p12 apns-dev-cert</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co0">#openssl pkcs12 -clcerts -nokeys -out apns-dev-cert.pem -in apns-dev-cert.p12</span></div>
</li>
<li class="li1">
<div class="de1">openssl pkcs12 -nocerts -out apns-dev-key.pem -<span class="kw1">in</span> apns-dev-key.p12</div>
</li>
<li class="li1">
<div class="de1"><span class="co0">#Remove password if needed</span></div>
</li>
<li class="li1">
<div class="de1">openssl rsa -<span class="kw1">in</span> apns-dev-key.pem -out apns-dev-key-noenc.pem</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">cat</span> apns-dev-key-noenc.pem apns-dev-cert.pem <span class="sy0">&gt;</span> apns-dev.pem</div>
</li>
</ol>
</div>
<p>Une fois le certif au format pem récupéré (ici nommé apns-dev.pem), on peut passer à l&#8217;envoi de push en PHP (en sandbox pour les test, sinon, il faudra changer l&#8217;url en gateway.push.apple.com) :</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">function</span> sendPushToToken<span class="br0">&#40;</span><span class="re1">$msg</span><span class="sy0">,</span><span class="re1">$token</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$serverId</span><span class="sy0">=</span><span class="nu0">1</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$name</span><span class="sy0">=</span><span class="st0">&quot;nom de mon appli&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$apnsHost</span> <span class="sy0">=</span> <span class="st0">&#39;gateway.sandbox.push.apple.com&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$apnsPort</span> <span class="sy0">=</span> <span class="nu0">2195</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$apnsCert</span> <span class="sy0">=</span> <span class="st0">&#39;apns-dev.pem&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="coMULTI">/*DON&#39;T TOUCH BELOW*/</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$payload</span><span class="br0">&#91;</span><span class="st0">&#39;aps&#39;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="kw3">array</span><span class="br0">&#40;</span><span class="st0">&#39;alert&#39;</span> <span class="sy0">=&gt;</span> <span class="re1">$msg</span><span class="sy0">,</span> <span class="st0">&#39;badge&#39;</span> <span class="sy0">=&gt;</span> <span class="nu0">0</span><span class="sy0">,</span> <span class="st0">&#39;sound&#39;</span> <span class="sy0">=&gt;</span> <span class="st0">&#39;default&#39;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$payload</span><span class="br0">&#91;</span><span class="st0">&#39;server&#39;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="kw3">array</span><span class="br0">&#40;</span><span class="st0">&#39;serverId&#39;</span> <span class="sy0">=&gt;</span> <span class="re1">$serverId</span><span class="sy0">,</span> <span class="st0">&#39;name&#39;</span> <span class="sy0">=&gt;</span> <span class="re1">$name</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$output</span> <span class="sy0">=</span> json_encode<span class="br0">&#40;</span><span class="re1">$payload</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$streamContext</span> <span class="sy0">=</span> <span class="kw3">stream_context_create</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw3">stream_context_set_option</span><span class="br0">&#40;</span><span class="re1">$streamContext</span><span class="sy0">,</span> <span class="st0">&#39;ssl&#39;</span><span class="sy0">,</span> <span class="st0">&#39;local_cert&#39;</span><span class="sy0">,</span> <span class="re1">$apnsCert</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$apns</span> <span class="sy0">=</span> stream_socket_client<span class="br0">&#40;</span><span class="st0">&#39;ssl://&#39;</span><span class="sy0">.</span><span class="re1">$apnsHost</span><span class="sy0">.</span><span class="st0">&#39;:&#39;</span><span class="sy0">.</span><span class="re1">$apnsPort</span><span class="sy0">,</span><span class="re1">$error</span><span class="sy0">,</span><span class="re1">$errorString</span><span class="sy0">,</span><span class="nu0">2</span><span class="sy0">,</span>STREAM_CLIENT_CONNECT<span class="sy0">,</span><span class="re1">$streamContext</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$apnsMessage</span> <span class="sy0">=</span> <span class="kw3">chr</span><span class="br0">&#40;</span><span class="nu0">0</span><span class="br0">&#41;</span><span class="sy0">.</span><span class="kw3">chr</span><span class="br0">&#40;</span><span class="nu0">0</span><span class="br0">&#41;</span><span class="sy0">.</span><span class="kw3">chr</span><span class="br0">&#40;</span><span class="nu0">32</span><span class="br0">&#41;</span><span class="sy0">.</span><span class="kw3">pack</span><span class="br0">&#40;</span><span class="st0">&#39;H*&#39;</span><span class="sy0">,</span><span class="kw3">str_replace</span><span class="br0">&#40;</span><span class="st0">&#39; &#39;</span><span class="sy0">,</span><span class="st0">&#39;&#39;</span><span class="sy0">,</span><span class="re1">$token</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">.</span><span class="kw3">chr</span><span class="br0">&#40;</span><span class="nu0">0</span><span class="br0">&#41;</span><span class="sy0">.</span><span class="kw3">chr</span><span class="br0">&#40;</span><span class="kw3">strlen</span><span class="br0">&#40;</span><span class="re1">$output</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">.</span><span class="re1">$output</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw3">fwrite</span><span class="br0">&#40;</span><span class="re1">$apns</span><span class="sy0">,</span> <span class="re1">$apnsMessage</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw3">fclose</span><span class="br0">&#40;</span><span class="re1">$apns</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>L&#8217;utilisation est très simple : on appel sendPushToToken(&#8216;notre message&#8217;,'le token de l&#8217;appareil&#8217;);<br />
et dans les 5 minutes, le message est reçu &#8230;.</p>
<p>Pour l&#8217;envoi en batch, on rajoute une boucle à l&#8217;envoi avec un tableau de tokens : </p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">function</span> sendPushToTokens<span class="br0">&#40;</span><span class="re1">$msg</span><span class="sy0">,</span><span class="re1">$tokens</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$serverId</span><span class="sy0">=</span><span class="nu0">1</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$name</span><span class="sy0">=</span><span class="st0">&quot;nom de mon appli&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$apnsHost</span> <span class="sy0">=</span> <span class="st0">&#39;gateway.sandbox.push.apple.com&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$apnsPort</span> <span class="sy0">=</span> <span class="nu0">2195</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$apnsCert</span> <span class="sy0">=</span> <span class="st0">&#39;apns-dev.pem&#39;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="coMULTI">/*DON&#39;T TOUCH BELOW*/</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$payload</span><span class="br0">&#91;</span><span class="st0">&#39;aps&#39;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="kw3">array</span><span class="br0">&#40;</span><span class="st0">&#39;alert&#39;</span> <span class="sy0">=&gt;</span> <span class="re1">$msg</span><span class="sy0">,</span> <span class="st0">&#39;badge&#39;</span> <span class="sy0">=&gt;</span> <span class="nu0">0</span><span class="sy0">,</span> <span class="st0">&#39;sound&#39;</span> <span class="sy0">=&gt;</span> <span class="st0">&#39;default&#39;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$payload</span><span class="br0">&#91;</span><span class="st0">&#39;server&#39;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="kw3">array</span><span class="br0">&#40;</span><span class="st0">&#39;serverId&#39;</span> <span class="sy0">=&gt;</span> <span class="re1">$serverId</span><span class="sy0">,</span> <span class="st0">&#39;name&#39;</span> <span class="sy0">=&gt;</span> <span class="re1">$name</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$output</span> <span class="sy0">=</span> json_encode<span class="br0">&#40;</span><span class="re1">$payload</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$streamContext</span> <span class="sy0">=</span> <span class="kw3">stream_context_create</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw3">stream_context_set_option</span><span class="br0">&#40;</span><span class="re1">$streamContext</span><span class="sy0">,</span> <span class="st0">&#39;ssl&#39;</span><span class="sy0">,</span> <span class="st0">&#39;local_cert&#39;</span><span class="sy0">,</span> <span class="re1">$apnsCert</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$apns</span> <span class="sy0">=</span> stream_socket_client<span class="br0">&#40;</span><span class="st0">&#39;ssl://&#39;</span><span class="sy0">.</span><span class="re1">$apnsHost</span><span class="sy0">.</span><span class="st0">&#39;:&#39;</span><span class="sy0">.</span><span class="re1">$apnsPort</span><span class="sy0">,</span><span class="re1">$error</span><span class="sy0">,</span><span class="re1">$errorString</span><span class="sy0">,</span><span class="nu0">2</span><span class="sy0">,</span>STREAM_CLIENT_CONNECT<span class="sy0">,</span><span class="re1">$streamContext</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">foreach</span><span class="br0">&#40;</span><span class="re1">$tokens</span> <span class="kw1">as</span> <span class="re1">$token</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$apnsMessage</span> <span class="sy0">=</span> <span class="kw3">chr</span><span class="br0">&#40;</span><span class="nu0">0</span><span class="br0">&#41;</span><span class="sy0">.</span><span class="kw3">chr</span><span class="br0">&#40;</span><span class="nu0">0</span><span class="br0">&#41;</span><span class="sy0">.</span><span class="kw3">chr</span><span class="br0">&#40;</span><span class="nu0">32</span><span class="br0">&#41;</span><span class="sy0">.</span><span class="kw3">pack</span><span class="br0">&#40;</span><span class="st0">&#39;H*&#39;</span><span class="sy0">,</span><span class="kw3">str_replace</span><span class="br0">&#40;</span><span class="st0">&#39; &#39;</span><span class="sy0">,</span><span class="st0">&#39;&#39;</span><span class="sy0">,</span><span class="re1">$token</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">.</span><span class="kw3">chr</span><span class="br0">&#40;</span><span class="nu0">0</span><span class="br0">&#41;</span><span class="sy0">.</span><span class="kw3">chr</span><span class="br0">&#40;</span><span class="kw3">strlen</span><span class="br0">&#40;</span><span class="re1">$output</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">.</span><span class="re1">$output</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">fwrite</span><span class="br0">&#40;</span><span class="re1">$apns</span><span class="sy0">,</span> <span class="re1">$apnsMessage</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw3">fclose</span><span class="br0">&#40;</span><span class="re1">$apns</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>L&#8217;utilisation est la suivante : sendPushToTokens(&#8216;mon message&#8217;,array(&#8216;token1&#8242;,&#8217;token2&#8242;))<br />
et dans les 5 minutes nos deux ip(hone|od) recevront notre message &#8230;</p>
<p>Le gros problème dans l&#8217;histoire, c&#8217;est qu&#8217;Apple ne renvoi aucune données &#8230; on ne peut pas savoir si toutes les personnes sont capables de recevoir le message (aucun retour n&#8217;est prévu). Pour ce faire on peut appeler le service de <a href="http://developer.apple.com/IPhone/library/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/CommunicatingWIthAPS/CommunicatingWIthAPS.html">feedback</a>.</p>
<p>Un script PHP permet de récupérer les <a href="http://iphonesdkdev.blogspot.com/2009/04/apns-client-development-certificate.html">tokens s&#8217;étant désabonnés</a>. (C&#8217;est amusant &#8230; tout les codes PHP pour l&#8217;envoi de PUSH se ressemble ^^&#8230; mais n&#8217;ayant pas encore utilisé le service de feedback, je préfère donner l&#8217;url du script en question)</p>
<p>Voilà &#8230; alors spammez bien xD.</p>

                            <div id="aspdf">
                                <a href="http://blog.gaetan-grigis.eu/wp-content/plugins/as-pdf/generate.php?post=790">
                                    <span>Télécharger l'article au format PDF</span>
                                </a>
                            </div>
                        <hr /><h2>Articles similaires : </h2><ul><li><a href="http://blog.gaetan-grigis.eu/mes-applicationsscripts/" rel="bookmark" title="Permanent Link: Mes Applications/Scripts">Mes Applications/Scripts</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/android-c2dm-notification-push-en-bash-avec-wget/" rel="bookmark" title="Permanent Link: Android C2DM Notification push en bash avec wget">Android C2DM Notification push en bash avec wget</a></li><li><a href="http://blog.gaetan-grigis.eu/android/android-application-de-controle-a-distancebackupinfo/" rel="bookmark" title="Permanent Link: [Android] application de contrôle à distance/backup/info">[Android] application de contrôle à distance/backup/info</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/administration/utiliser-git-pour-gerer-ses-projets-mini-memo/" rel="bookmark" title="Permanent Link: Utiliser Git pour gérer ses projets (mini mémo)">Utiliser Git pour gérer ses projets (mini mémo)</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/administration/openvpn-et-authentification-par-ca-login-et-mot-de-passe/" rel="bookmark" title="Permanent Link: OpenVPN et authentification par CA, Login et mot de passe">OpenVPN et authentification par CA, Login et mot de passe</a></li></ul><hr /><small>Copyright &copy; 2008-2011 - Gaetan Grigis - <a href="http://blog.gaetan-grigis.eu">blog.gaetan-grigis.eu</a> </small>]]></content:encoded>
			<wfw:commentRss>http://blog.gaetan-grigis.eu/programmation/push-iphoneod-en-php-en-envoi-batch/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Checker la validité d&#8217;une adresse mail en PHP via SMTP</title>
		<link>http://blog.gaetan-grigis.eu/programmation/checker-la-validite-dune-adresse-mail-en-php-via-smtp/</link>
		<comments>http://blog.gaetan-grigis.eu/programmation/checker-la-validite-dune-adresse-mail-en-php-via-smtp/#comments</comments>
		<pubDate>Thu, 03 Dec 2009 18:16:24 +0000</pubDate>
		<dc:creator>Gaëtan</dc:creator>
				<category><![CDATA[Programmation]]></category>
		<category><![CDATA[checker mail]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[protocole]]></category>
		<category><![CDATA[rfc 821]]></category>
		<category><![CDATA[smtp]]></category>
		<category><![CDATA[socket]]></category>

		<guid isPermaLink="false">http://blog.gaetan-grigis.eu/?p=627</guid>
		<description><![CDATA[plopinou &#8230; Il arrive toujours un jour où l&#8217;on doit checker la validité d&#8217;une adresse mail de façon sûr (plus qu&#8217;une simple vérification sur la validité du nom de domaine). Pour ce faire il faut directement se connecter sur le SMTP du domaine de l&#8217;adresse mail via un socket en PHP et envoyer l&#8217;adresse mail [...]]]></description>
			<content:encoded><![CDATA[<p>plopinou &#8230;</p>
<p>Il arrive toujours un jour où l&#8217;on doit checker la validité d&#8217;une adresse mail de façon sûr (plus qu&#8217;une simple vérification sur la validité du nom de domaine).<br />
Pour ce faire il faut directement se connecter sur le SMTP du domaine de l&#8217;adresse mail via un socket en PHP et envoyer l&#8217;adresse mail à checker.<br />
<span id="more-627"></span></p>
<p>Le petit script :</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">&lt;?php</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">/*</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">Error Code</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;-1 not an adress mail</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;-2 can&#39;t connect to SMTP</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;-3 no mx server found</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;-4 connection rejected</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;-5 our adress has been rejected</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;-6 this adress isn&#39;t valid</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;-7 problem with EHLO command</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">*/</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> mailTester<span class="br0">&#40;</span><span class="re1">$mail</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">if</span><span class="br0">&#40;</span><span class="kw3">preg_match</span><span class="br0">&#40;</span><span class="st0">&quot;#^(.*)@(.*<span class="es0">\.</span>[a-z]{2,4})$#i&quot;</span><span class="sy0">,</span><span class="re1">$mail</span><span class="sy0">,</span><span class="re1">$ret</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$socket</span> <span class="sy0">=</span> <span class="kw3">socket_create</span><span class="br0">&#40;</span>AF_INET<span class="sy0">,</span> SOCK_STREAM<span class="sy0">,</span> <span class="nu0">0</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">getmxrr</span><span class="br0">&#40;</span><span class="re1">$ret</span><span class="br0">&#91;</span><span class="nu0">2</span><span class="br0">&#93;</span><span class="sy0">,</span><span class="re1">$r</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="kw3">count</span><span class="br0">&#40;</span><span class="re1">$r</span><span class="br0">&#41;</span><span class="sy0">==</span><span class="nu0">0</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#123;</span><span class="co1">//try to connect directly to the server</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="sy0">@</span><span class="kw3">fsockopen</span><span class="br0">&#40;</span><span class="re1">$ret</span><span class="br0">&#91;</span><span class="nu0">2</span><span class="br0">&#93;</span><span class="sy0">,</span><span class="st0">&quot;25&quot;</span><span class="sy0">,</span><span class="re1">$er1</span><span class="sy0">,</span><span class="re1">$er2</span><span class="sy0">,</span><span class="nu0">0.5</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="co1">//can&#39;t use it with socket :s</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">if</span><span class="br0">&#40;</span><span class="re1">$er1</span><span class="sy0">&gt;</span><span class="nu0">0</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">return</span> <span class="nu0">-3</span><span class="sy0">;</span><span class="co1">//no mx server and no smtp server</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="re1">$r</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="sy0">=</span><span class="re1">$ret</span><span class="br0">&#91;</span><span class="nu0">2</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="sy0">!</span><span class="kw3">socket_connect</span><span class="br0">&#40;</span><span class="re1">$socket</span><span class="sy0">,</span><span class="re1">$r</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="sy0">,</span><span class="st0">&quot;25&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">return</span> <span class="nu0">-2</span><span class="sy0">;</span><span class="co1">//can&#39;t connect</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">socket_recv</span><span class="br0">&#40;</span><span class="re1">$socket</span><span class="sy0">,</span><span class="re1">$retour</span><span class="sy0">,</span><span class="nu0">1024</span><span class="sy0">,</span><span class="nu0">0</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$ret</span><span class="sy0">=</span>getCodeMsg<span class="br0">&#40;</span><span class="re1">$retour</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="re1">$ret</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="sy0">!=</span><span class="nu0">220</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">return</span> <span class="nu0">-4</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">socket_write</span><span class="br0">&#40;</span><span class="re1">$socket</span><span class="sy0">,</span><span class="st0">&quot;EHLO google.com<span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">socket_recv</span><span class="br0">&#40;</span><span class="re1">$socket</span><span class="sy0">,</span><span class="re1">$retour</span><span class="sy0">,</span><span class="nu0">1024</span><span class="sy0">,</span><span class="nu0">0</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$ret</span><span class="sy0">=</span>getCodeMsg<span class="br0">&#40;</span><span class="re1">$retour</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="re1">$ret</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="sy0">!=</span><span class="nu0">250</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">return</span> <span class="nu0">-7</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">socket_write</span><span class="br0">&#40;</span><span class="re1">$socket</span><span class="sy0">,</span><span class="st0">&quot;MAIL FROM: &lt;mailchecker@gmail.com&gt;<span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">socket_recv</span><span class="br0">&#40;</span><span class="re1">$socket</span><span class="sy0">,</span><span class="re1">$retour</span><span class="sy0">,</span><span class="nu0">1024</span><span class="sy0">,</span><span class="nu0">0</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$ret</span><span class="sy0">=</span>getCodeMsg<span class="br0">&#40;</span><span class="re1">$retour</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="re1">$ret</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="sy0">!=</span><span class="nu0">250</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">return</span> <span class="nu0">-5</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">socket_write</span><span class="br0">&#40;</span><span class="re1">$socket</span><span class="sy0">,</span><span class="st0">&quot;RCPT TO: &lt;&quot;</span><span class="sy0">.</span><span class="re1">$mail</span><span class="sy0">.</span><span class="st0">&quot;&gt;<span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">socket_recv</span><span class="br0">&#40;</span><span class="re1">$socket</span><span class="sy0">,</span><span class="re1">$retour</span><span class="sy0">,</span><span class="nu0">1024</span><span class="sy0">,</span><span class="nu0">0</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">socket_write</span><span class="br0">&#40;</span><span class="re1">$socket</span><span class="sy0">,</span><span class="st0">&quot;quit<span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span><span class="co1">//bisou</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$ret</span> <span class="sy0">=</span>getCodeMsg<span class="br0">&#40;</span><span class="re1">$retour</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">socket_close</span><span class="br0">&#40;</span><span class="re1">$socket</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="re1">$ret</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="sy0">==</span><span class="nu0">250</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">return</span> <span class="nu0">1</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">else</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">return</span> <span class="nu0">-6</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">return</span> <span class="nu0">-1</span><span class="sy0">;</span><span class="co1">//not an adress mail</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> getCodeMsg<span class="br0">&#40;</span><span class="re1">$ret</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw3">preg_match</span><span class="br0">&#40;</span><span class="st0">&quot;#^([0-9]+) (.*)$#im&quot;</span><span class="sy0">,</span><span class="re1">$ret</span><span class="sy0">,</span><span class="re1">$tab</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw3">array_shift</span><span class="br0">&#40;</span><span class="re1">$tab</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">return</span> <span class="re1">$tab</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">?&gt;</span></div>
</li>
</ol>
</div>
<p>et hop, c&#8217;est tout, y&#8217;a pas besoin de plus d&#8217;explication en plus je pense, au pire, il y a pas mal de doc sur le procotole SMTP. (Le domaine google.com et l&#8217;adresse mailchecker sont des fakes, mais il faut fournir des domaines existants et une adresse mail pour certain serveurs SMTP, google m&#8217;a semblé être le bon choix ^^).</p>
<p>Si c&#8217;est lent, c&#8217;est normal, suivant les serveurs SMTP, la vérification peut prendre entre 5secs et 30secs voir plus, pour des traitements sur des lots de mail (genre des newsletters), il est possible de faire une boucle sur les RCPT TO: pour les adresses mail d&#8217;un même domaine, ce qui permet d&#8217;utiliser la connexion courrantes et évite d&#8217;ouvrir un trop grand nombre de connexion sur le serveur en question.</p>

                            <div id="aspdf">
                                <a href="http://blog.gaetan-grigis.eu/wp-content/plugins/as-pdf/generate.php?post=627">
                                    <span>Télécharger l'article au format PDF</span>
                                </a>
                            </div>
                        <hr /><h2>Articles similaires : </h2><ul><li><a href="http://blog.gaetan-grigis.eu/mes-applicationsscripts/" rel="bookmark" title="Permanent Link: Mes Applications/Scripts">Mes Applications/Scripts</a></li><li><a href="http://blog.gaetan-grigis.eu/programmation/petit-serveur-dadresse-mail-de-diffusion/" rel="bookmark" title="Permanent Link: Petit serveur d&#8217;adresse mail de diffusion">Petit serveur d&#8217;adresse mail de diffusion</a></li><li><a href="http://blog.gaetan-grigis.eu/programmation/envoyer-des-mails-dans-le-passe/" rel="bookmark" title="Permanent Link: Envoyer des mails dans le passé">Envoyer des mails dans le passé</a></li><li><a href="http://blog.gaetan-grigis.eu/programmation/creer-son-propre-service-de-mail-jetable-avec-appengine/" rel="bookmark" title="Permanent Link: Créer son propre service de mail jetable avec appengine">Créer son propre service de mail jetable avec appengine</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/administration/utiliser-google-app-pour-gerer-son-domaine/" rel="bookmark" title="Permanent Link: Utiliser Google App pour gérer son Domaine">Utiliser Google App pour gérer son Domaine</a></li></ul><hr /><small>Copyright &copy; 2008-2011 - Gaetan Grigis - <a href="http://blog.gaetan-grigis.eu">blog.gaetan-grigis.eu</a> </small>]]></content:encoded>
			<wfw:commentRss>http://blog.gaetan-grigis.eu/programmation/checker-la-validite-dune-adresse-mail-en-php-via-smtp/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Exemple de Bot d&#8217;Authentification et de clic en Php</title>
		<link>http://blog.gaetan-grigis.eu/programmation/exemple-de-bot-dauthentification-et-de-clic-en-php/</link>
		<comments>http://blog.gaetan-grigis.eu/programmation/exemple-de-bot-dauthentification-et-de-clic-en-php/#comments</comments>
		<pubDate>Tue, 20 Oct 2009 10:14:42 +0000</pubDate>
		<dc:creator>Gaëtan</dc:creator>
				<category><![CDATA[Programmation]]></category>
		<category><![CDATA[bot]]></category>
		<category><![CDATA[clic]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://blog.gaetan-grigis.eu/?p=602</guid>
		<description><![CDATA[Bonjour à tous &#8230; Aujourd&#8217;hui ze bot &#171;&#160;cliqueur&#160;&#187; ^^, il s&#8217;agit en fait d&#8217;un bot qui s&#8217;authentifie en POST, récupère le cookie et va en get sur un lien (le clic quoi). A quoi ça peut bien servir ? Pour ma part, c&#8217;était pour récupérer une clé pour la closed beta de HON (un Dota [...]]]></description>
			<content:encoded><![CDATA[<p>Bonjour à tous &#8230;</p>
<p>Aujourd&#8217;hui ze bot &laquo;&nbsp;cliqueur&nbsp;&raquo; ^^, il s&#8217;agit en fait d&#8217;un bot qui s&#8217;authentifie en POST, récupère le cookie et va en get sur un lien (le clic quoi).</p>
<p>A quoi ça peut bien servir ?</p>
<p>Pour ma part, c&#8217;était pour récupérer une clé pour la closed beta de HON (un Dota avec des binaires pour linux, fallait pas rater ça!!) sur le site de Alienware, le problème, c&#8217;est que les clés étaient censé être disponible soit très tard dans la soirée, soit très tôt dans la matinée, et comme je n&#8217;aimais pas l&#8217;idée de rester sur le site à poireauter, j&#8217;ai fait ce que tout programmeurs auraient fait ^^, un sympatique script &#8230;</p>
<p>Les actions à faire étaient :</p>
<ol>
<li>Regarder sur le site si le nombre de clés disponibles étaient supérieur à 0</li>
<li>S&#8217;authentifier</li>
<li>Récupérer les clés</li>
</ol>
<p>Ce qui donne donc le script suivant en tâche Cron toutes les 5 minutes (fallait juste pas oublier de couper le script après réception des clés ^^) :</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">&lt;?php</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">define</span><span class="br0">&#40;</span><span class="st0">&quot;USERNAME&quot;</span><span class="sy0">,</span><span class="st0">&quot;login&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">define</span><span class="br0">&#40;</span><span class="st0">&quot;PASSWORD&quot;</span><span class="sy0">,</span><span class="st0">&quot;pass&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">define</span><span class="br0">&#40;</span><span class="st0">&quot;MAILADRES&quot;</span><span class="sy0">,</span><span class="st0">&quot;mail@mail.com&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$stringLoginPost</span><span class="sy0">=</span><span class="st0">&quot;username=&quot;</span><span class="sy0">.</span>USERNAME<span class="sy0">.</span><span class="st0">&quot;&amp;password=&quot;</span><span class="sy0">.</span>PASSWORD<span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">/***********************************************DO NOT TOUCH**************************************************/</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$hon</span> <span class="sy0">=</span> <span class="kw3">file_get_contents</span><span class="br0">&#40;</span><span class="st0">&quot;http://www.alienwarearena.com/event/hon-beta-giveaway/&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">preg_match</span><span class="br0">&#40;</span><span class="st0">&#39;|&lt;h3[^&gt;]*&gt;Closed Beta Keys Remaining&lt;/h3&gt;[<span class="es0">\W</span><span class="es0">\w</span>]*&lt;h1[^&gt;]*&gt;([0-9]+)&lt;/h1&gt;|iU&#39;</span><span class="sy0">,</span><span class="re1">$hon</span><span class="sy0">,</span><span class="re1">$retour</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">if</span><span class="br0">&#40;</span><span class="re1">$retour</span><span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span><span class="sy0">!=</span><span class="nu0">0</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="re1">$socket</span> <span class="sy0">=</span> <span class="kw3">socket_create</span><span class="br0">&#40;</span>AF_INET<span class="sy0">,</span> SOCK_STREAM<span class="sy0">,</span> <span class="nu0">0</span><span class="br0">&#41;</span> or <span class="kw3">die</span><span class="br0">&#40;</span><span class="st0">&quot;Could not create socket<span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">if</span><span class="br0">&#40;</span><span class="kw3">socket_connect</span><span class="br0">&#40;</span><span class="re1">$socket</span><span class="sy0">,</span><span class="st0">&quot;www.alienwarearena.com&quot;</span><span class="sy0">,</span><span class="st0">&quot;80&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="co1">//La requete de post pour ce logger</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$postReq</span> <span class="sy0">=</span> <span class="st0">&quot;POST /cmd/account/login/ HTTP/1.1<span class="es0">\r</span><span class="es0">\n</span>&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$postReq</span><span class="sy0">.=</span> <span class="st0">&quot;Host: www.alienwarearena.com<span class="es0">\r</span><span class="es0">\n</span>&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$postReq</span><span class="sy0">.=</span> <span class="st0">&quot;Connection: Keep-Alive<span class="es0">\r</span><span class="es0">\n</span>&quot;</span><span class="sy0">;</span><span class="co1">//comme ça on se reconnecte direct <img src='http://blog.gaetan-grigis.eu/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  Pipelinning ROXX!!</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$postReq</span><span class="sy0">.=</span> <span class="st0">&quot;Content-type: application/x-www-form-urlencoded<span class="es0">\r</span><span class="es0">\n</span>&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$postReq</span><span class="sy0">.=</span> <span class="st0">&quot;Content-Length: &quot;</span><span class="sy0">.</span><span class="kw3">strlen</span><span class="br0">&#40;</span><span class="re1">$stringLoginPost</span><span class="br0">&#41;</span><span class="sy0">.</span><span class="st0">&quot;<span class="es0">\r</span><span class="es0">\n</span><span class="es0">\r</span><span class="es0">\n</span>&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$postReq</span><span class="sy0">.=</span> <span class="re1">$stringLoginPost</span><span class="sy0">.</span><span class="st0">&quot;<span class="es0">\r</span><span class="es0">\n</span>&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">socket_write</span><span class="br0">&#40;</span><span class="re1">$socket</span><span class="sy0">,</span><span class="re1">$postReq</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">socket_recv</span><span class="br0">&#40;</span><span class="re1">$socket</span><span class="sy0">,</span><span class="re1">$retour</span><span class="sy0">,</span><span class="nu0">1024</span><span class="sy0">,</span><span class="nu0">0</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="co1">//la récupération de la valeur du cookie</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">preg_match</span><span class="br0">&#40;</span><span class="st0">&quot;#Set-Cookie: PHPSESSID=([^;]*); path=/#&quot;</span><span class="sy0">,</span><span class="re1">$retour</span><span class="sy0">,</span><span class="re1">$tabRet</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="co1">//On va à la page de récupération des clés ^^</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$getReq</span> <span class="sy0">=</span> <span class="st0">&quot;GET /cmd/account/get-beta-key/hon/ HTTP/1.1<span class="es0">\r</span><span class="es0">\n</span>&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$getReq</span><span class="sy0">.=</span> <span class="st0">&quot;Host: www.alienwarearena.com<span class="es0">\r</span><span class="es0">\n</span>&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$getReq</span><span class="sy0">.=</span> <span class="st0">&quot;Cookie: PHPSESSID=&quot;</span><span class="sy0">.</span><span class="re1">$tabRet</span><span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span><span class="sy0">.</span><span class="st0">&quot;<span class="es0">\r</span><span class="es0">\n</span>&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$getReq</span><span class="sy0">.=</span> <span class="st0">&quot;Connection: Close<span class="es0">\r</span><span class="es0">\n</span><span class="es0">\r</span><span class="es0">\n</span>&quot;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">socket_write</span><span class="br0">&#40;</span><span class="re1">$socket</span><span class="sy0">,</span><span class="re1">$getReq</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">socket_recv</span><span class="br0">&#40;</span><span class="re1">$socket</span><span class="sy0">,</span><span class="re1">$retour</span><span class="sy0">,</span><span class="nu0">1024</span><span class="sy0">,</span><span class="nu0">0</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">mail</span><span class="br0">&#40;</span>MAILADRES<span class="sy0">,</span><span class="st0">&quot;HON KEY!!&quot;</span><span class="sy0">,</span><span class="st0">&quot;You got an HON KEY : &quot;</span><span class="sy0">.</span><span class="re1">$retour</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">socket_close</span><span class="br0">&#40;</span><span class="re1">$socket</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">?&gt;</span></div>
</li>
</ol>
</div>
<p>Donc voilà &#8230; le script reste une idée (qui a fonctionné dans mon cas) à modifier selon les cas, avec curl ça aurait été plus court, mais faire mumuse avec les sockets ça n&#8217;a pas de prix &#8230;</p>

                            <div id="aspdf">
                                <a href="http://blog.gaetan-grigis.eu/wp-content/plugins/as-pdf/generate.php?post=602">
                                    <span>Télécharger l'article au format PDF</span>
                                </a>
                            </div>
                        <hr /><h2>Articles similaires : </h2><ul><li><a href="http://blog.gaetan-grigis.eu/mes-applicationsscripts/" rel="bookmark" title="Permanent Link: Mes Applications/Scripts">Mes Applications/Scripts</a></li><li><a href="http://blog.gaetan-grigis.eu/programmation/cpp/netbeans6-et-auto-completion-qt4/" rel="bookmark" title="Permanent Link: Netbeans6 et auto-complétion QT4">Netbeans6 et auto-complétion QT4</a></li><li><a href="http://blog.gaetan-grigis.eu/ubuntu/wifi-ou-3g-tethering-sur-cyanogenmod-via-bluetooth-ou-usb/" rel="bookmark" title="Permanent Link: Wifi ou 3G tethering sur cyanogenmod via Bluetooth ou USB">Wifi ou 3G tethering sur cyanogenmod via Bluetooth ou USB</a></li><li><a href="http://blog.gaetan-grigis.eu/programmation/php-programmation/php-eviter-les-injections-tout-en-preservant-lintegrite-des-donnees/" rel="bookmark" title="Permanent Link: Php: éviter les injections tout en préservant l&#8217;intégrité des données">Php: éviter les injections tout en préservant l&#8217;intégrité des données</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/gerer-ses-routes-ip-pour-ses-vpn-via-networkmanager-et-route/" rel="bookmark" title="Permanent Link: Gérer ses routes IP pour ses VPN (via NetworkManager et route)">Gérer ses routes IP pour ses VPN (via NetworkManager et route)</a></li></ul><hr /><small>Copyright &copy; 2008-2011 - Gaetan Grigis - <a href="http://blog.gaetan-grigis.eu">blog.gaetan-grigis.eu</a> </small>]]></content:encoded>
			<wfw:commentRss>http://blog.gaetan-grigis.eu/programmation/exemple-de-bot-dauthentification-et-de-clic-en-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[DEFCON17] Slides sur le Cross Site Scripting (XSS reminder)</title>
		<link>http://blog.gaetan-grigis.eu/securite/defcon17-slides-sur-le-cross-site-scripting-xss-reminder/</link>
		<comments>http://blog.gaetan-grigis.eu/securite/defcon17-slides-sur-le-cross-site-scripting-xss-reminder/#comments</comments>
		<pubDate>Sun, 16 Aug 2009 14:34:16 +0000</pubDate>
		<dc:creator>Gaëtan</dc:creator>
				<category><![CDATA[Sécurité]]></category>
		<category><![CDATA[hpp]]></category>
		<category><![CDATA[ids]]></category>
		<category><![CDATA[ids evasion]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[xss]]></category>

		<guid isPermaLink="false">http://blog.gaetan-grigis.eu/?p=545</guid>
		<description><![CDATA[Plop à tous Un rapide lien today sur les XSS &#171;&#160;favoris&#160;&#187;, je vais pas revenir sur les XSS, tout le monde sait ce que c&#8217;est , mais le ppt en question permet d&#8217;avoir une rapide vue d&#8217;ensemble des techniques (certaine plus avancée comme le  HPP &#8211; HTTP Parameter Pollution pour l&#8217;evasion d&#8217;IDS &#8230; moi qui était [...]]]></description>
			<content:encoded><![CDATA[<p>Plop à tous</p>
<p>Un rapide lien today sur les <a href="http://p42.us/favxss/fav.ppt" target="_blank">XSS &laquo;&nbsp;favoris&nbsp;&raquo;</a>, je vais pas revenir sur les <a href="http://fr.wikipedia.org/wiki/Cross-site_scripting">XSS</a>, tout le monde sait ce que c&#8217;est <img src='http://blog.gaetan-grigis.eu/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> , mais le ppt en question permet d&#8217;avoir une rapide vue d&#8217;ensemble des techniques (certaine plus avancée comme le  HPP &#8211; <em>HTTP Parameter Pollution</em> pour l&#8217;evasion d&#8217;IDS &#8230; moi qui était content du couple prelude/modsecurity ^^).</p>
<p><em>Bon bien sûr, le but de ce ppt n&#8217;était pas d&#8217;enseigner toutes les techniques, mais seulement d&#8217;informer pour permettre à son lecteur de faire ses propres recherches sur le domaine <img src='http://blog.gaetan-grigis.eu/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</em></p>
<p>Sinon, les dernières diapos parlent d&#8217;elles-mêmes sur la sécurité (relative) qu&#8217;offrent les IDS dans le domaine du web, avec des règles comme :</p>
<blockquote><p>utiliser &#8216; or 2=2 &#8212; à la place de &#8216; or 1=1 &#8211;<br />
nommer les shells rofl.php à la place de c99.php<br />
utiliser prompt(&#8216;xss&#8217;) à la palce de alert(&#8216;xss&#8217;)</p></blockquote>
<p>C&#8217;est vrai que quand on regarde les filtres de modsecurity, il suffit de changer les noms ou les commandes balancés en paramètre et certaines attaques passent :s (je suis tout de même déçu par le modsecurity pour le <a href="http://www.slideshare.net/Wisec/http-parameter-pollution-a-new-category-of-web-attacks" target="_blank">HPP</a>, un simple &laquo;&nbsp;join&nbsp;&raquo; du paramètre <em>suffirait</em> à bloquer l&#8217;attaque &#8230;).</p>
<p>Donc au lieu d&#8217;utiliser des sytèmes energivore pour sécuriser des sites web, il suffit de bien coder son site et comme ça on dort tranquille et on gagne en performance &#8230; (utopie quand tu nous tiens^^).</p>

                            <div id="aspdf">
                                <a href="http://blog.gaetan-grigis.eu/wp-content/plugins/as-pdf/generate.php?post=545">
                                    <span>Télécharger l'article au format PDF</span>
                                </a>
                            </div>
                        <hr /><h2>Articles similaires : </h2><ul><li><a href="http://blog.gaetan-grigis.eu/systeme/administration/modsecurity-mise-en-place-de-restrictions-sur-les-regles-de-restrictions/" rel="bookmark" title="Permanent Link: ModSecurity mise en place de restrictions sur les règles de restrictions ^^">ModSecurity mise en place de restrictions sur les règles de restrictions ^^</a></li><li><a href="http://blog.gaetan-grigis.eu/programmation/php-programmation/se-proteger-contre-la-failles-csrf/" rel="bookmark" title="Permanent Link: Se protéger contre la failles CSRF">Se protéger contre la failles CSRF</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/administration-de-serveurs-apache-modsecurity2/" rel="bookmark" title="Permanent Link: Administration de serveurs apache : modsecurity2">Administration de serveurs apache : modsecurity2</a></li><li><a href="http://blog.gaetan-grigis.eu/programmation/cacher-des-surprises-dans-votre-site-web/" rel="bookmark" title="Permanent Link: Cacher des surprises dans votre site web ^^">Cacher des surprises dans votre site web ^^</a></li><li><a href="http://blog.gaetan-grigis.eu/non-classe/un-blog-sur-le-php/" rel="bookmark" title="Permanent Link: &#8230; Un blog xD &#8230;">&#8230; Un blog xD &#8230;</a></li></ul><hr /><small>Copyright &copy; 2008-2011 - Gaetan Grigis - <a href="http://blog.gaetan-grigis.eu">blog.gaetan-grigis.eu</a> </small>]]></content:encoded>
			<wfw:commentRss>http://blog.gaetan-grigis.eu/securite/defcon17-slides-sur-le-cross-site-scripting-xss-reminder/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Syn Flooding, optimisation PHP, &#8230;</title>
		<link>http://blog.gaetan-grigis.eu/systeme/administration/syn-flooding-optimisation-php/</link>
		<comments>http://blog.gaetan-grigis.eu/systeme/administration/syn-flooding-optimisation-php/#comments</comments>
		<pubDate>Wed, 13 May 2009 21:13:00 +0000</pubDate>
		<dc:creator>Gaëtan</dc:creator>
				<category><![CDATA[Administration]]></category>
		<category><![CDATA[Sécurité]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[dns]]></category>
		<category><![CDATA[optimisation]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[syn flood]]></category>

		<guid isPermaLink="false">http://blog.gaetan-grigis.eu/?p=401</guid>
		<description><![CDATA[Bonsoir &#8230; Comme j&#8217;ai pas grand chose à écrire (et que ça ne sert à rien de réinventer la roue ^^), quelques liens sympa pour ce soir : Un très bon article sur une façon de contrer les synflooding (dont korben a fait les frais aujourdhui ^^) Un bon moyen d&#8217;améliorer les performances de son [...]]]></description>
			<content:encoded><![CDATA[<p>Bonsoir &#8230;</p>
<p>Comme j&#8217;ai pas grand chose à écrire (et que ça ne sert à rien de réinventer la roue ^^), quelques liens sympa pour ce soir :</p>
<p>Un très bon article sur une façon de contrer les <a href="http://www.tux-planet.fr/contrer-une-attaque-ddos-de-type-syn-flood-sous-linux/" target="_blank">synflooding</a> (dont korben a fait les frais aujourdhui ^^)<a href="http://www.tux-planet.fr/contrer-une-attaque-ddos-de-type-syn-flood-sous-linux/" target="_blank"><br />
</a></p>
<p>Un bon moyen d&#8217;améliorer les performances de son serveur apache (utilisant PHP bien sûr) :</p>
<ul>
<li>Le <a href="http://www.webstrat.fr/technologie/optimiser-la-vitesse-d-une-application-php-par-l-opcode-xcache" target="_blank">premier lien</a> avec quelques tests sympa</li>
<li>Le <a href="http://www.bonvga.net/blog/je_passe_a_xcache" target="_blank">second lien</a> avec une astuce pour installer le panel d&#8217;admin (qui n&#8217;est pas forcément dans les paquets comme le suggère le 1er)</li>
</ul>
<p>J&#8217;ai testé le truc, mais je suis pas sûr que ça mettent en cache quelque chose &#8230; le chargement de la page principal du blog dure encore 10 secs (faut aussi avouer que le premier accès disque d&#8217;un RPS est lent, est que la base de données prend aussi une claque avec le nombre de données affiché, mais bon), j&#8217;en ai profité pour améliorer les performances de mon serveur DNS et &laquo;&nbsp;sécuriser&nbsp;&raquo; la bête au passage.</p>
<p>Sinon, je <a href="http://twitter.com/loupzeur" target="_blank">twit</a>te (faites pas gaffe au nom &#8230; c&#8217;est mon côté féminin <img src='http://blog.gaetan-grigis.eu/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ) quelque liens, et commandes sympa, enfin côté contenu, je compte écrire un ou plusieurs articles sur l&#8217;IPSec (que je vais devoir déployer sur un réseaux), ainsi que deux trois autres astuces genre comment planter un serveur Web en 2 2 (&#8230; ça plaira à korben après le DoS ;p ).</p>
<p>Voilà &#8230; bonne soirée.</p>

                            <div id="aspdf">
                                <a href="http://blog.gaetan-grigis.eu/wp-content/plugins/as-pdf/generate.php?post=401">
                                    <span>Télécharger l'article au format PDF</span>
                                </a>
                            </div>
                        <hr /><h2>Articles similaires : </h2><ul><li><a href="http://blog.gaetan-grigis.eu/systeme/administration/nouvelle-version-de-prewikka-sur-debian-testing/" rel="bookmark" title="Permanent Link: Nouvelle version de Prewikka sur debian testing">Nouvelle version de Prewikka sur debian testing</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/configuration-de-processus-apache-au-poil/" rel="bookmark" title="Permanent Link: Configuration de processus apache au poil &#8230;">Configuration de processus apache au poil &#8230;</a></li></ul><hr /><small>Copyright &copy; 2008-2011 - Gaetan Grigis - <a href="http://blog.gaetan-grigis.eu">blog.gaetan-grigis.eu</a> </small>]]></content:encoded>
			<wfw:commentRss>http://blog.gaetan-grigis.eu/systeme/administration/syn-flooding-optimisation-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fork et PHP utile ??</title>
		<link>http://blog.gaetan-grigis.eu/programmation/php-programmation/fork-et-php-utile/</link>
		<comments>http://blog.gaetan-grigis.eu/programmation/php-programmation/fork-et-php-utile/#comments</comments>
		<pubDate>Wed, 01 Oct 2008 18:17:25 +0000</pubDate>
		<dc:creator>Gaëtan</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[fork]]></category>

		<guid isPermaLink="false">http://blog.gaetan-grigis.eu/?p=162</guid>
		<description><![CDATA[Bonsoir &#8230; Alors voilà &#8230; thème de la soirée les forks et PHP &#8230; On lit souvent sur les forums que les forks en PHP servent strictement à rien et tous le &#8230; et je dois avouer que de la prog système en PHP, c&#8217;est vraiment bof bof. Mais cette semaine, pour le développement de [...]]]></description>
			<content:encoded><![CDATA[<p>Bonsoir &#8230;</p>
<p>Alors voilà &#8230; thème de la soirée<strong> les forks et PHP</strong> &#8230;</p>
<p>On lit souvent sur les forums que les forks en PHP servent strictement à rien et tous le &#8230; et je dois avouer que de la prog système en PHP, c&#8217;est vraiment bof bof.</p>
<p>Mais cette semaine, pour le développement de mon application de gestion de NewsLetter (pour mon apprentissage), on m&#8217;a obligé à faire des forks et autre astuces système pour optimiser un peu la bête ^^.</p>
<p>Au départ, j&#8217;étais plutôt septique, je trouvais ça même louche &#8230; j&#8217;avais même jamais entendu parler de fork sur PHP, mais au final, j&#8217;étais plutôt surpris du résultat &#8230;</p>
<p>Pour exemple : Un script doit envoyer 60 mails.</p>
<p><strong>Une appli en single :</strong></p>
<pre class="brush: php">
for($i=0;$i&lt;60;$i++)
{
mail($mail_a[$i],&quot;sujet&quot;,&quot;message&quot;);
}
</pre>
<p><strong><br />
</strong></p>
<p><strong>Une appli (en &laquo;&nbsp;multi thread&nbsp;&raquo;) :</strong></p>
<pre class="brush: php">
for($i=0;$i&lt;60;$i++)
{
$pid = pcntl_fork();
if ($pid == -1) {
die(&#039;dupplication impossible&#039;);
} else if ($pid) {
$pid_a[] = $pid;
//juste au cas où
} else {
mail($mail_a[$i],&quot;sujet&quot;,&quot;message&quot;);
}
}
pcntl_waitpid  ( 0 , $status);
// on attend la mort de tous ses fils ... c&#039;est cruel
</pre>
<p>Si vous chronométrez le temps que ces deux scripts prennent, l&#8217;on remarque la rapidité du fork &#8230;</p>
<p>Lorsque j&#8217;ai testé le code (sur le serveur de ma boite), le premier mettait presque 30 sec pour envoyer les 60 mails (et encore, je les recevais pas tous), dans le deuxième cas, c&#8217;était instantanné, la plupart des threads ce terminaient dans la seconde.</p>
<p>Donc voilà &#8230; ne jamais dire que de la prog système dans le web ça sert à rien <img src='http://blog.gaetan-grigis.eu/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> , je go tenter de faire un site avec des signaux et des sémaphores :-d.</p>

                            <div id="aspdf">
                                <a href="http://blog.gaetan-grigis.eu/wp-content/plugins/as-pdf/generate.php?post=162">
                                    <span>Télécharger l'article au format PDF</span>
                                </a>
                            </div>
                        <hr /><h2>Articles similaires : </h2><ul><li><a href="http://blog.gaetan-grigis.eu/securite/utilisation-de-socat-avec-tor/" rel="bookmark" title="Permanent Link: Utilisation de socat avec Tor">Utilisation de socat avec Tor</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/commandes-linux-sympa/" rel="bookmark" title="Permanent Link: Commandes linux sympa">Commandes linux sympa</a></li><li><a href="http://blog.gaetan-grigis.eu/programmation/creer-son-propre-service-de-mail-jetable-avec-appengine/" rel="bookmark" title="Permanent Link: Créer son propre service de mail jetable avec appengine">Créer son propre service de mail jetable avec appengine</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/acces-restreint-sur-certain-ports-dans-le-temps/" rel="bookmark" title="Permanent Link: Accès restreint sur certain ports dans le temps">Accès restreint sur certain ports dans le temps</a></li><li><a href="http://blog.gaetan-grigis.eu/programmation/java/javafx-quelque-liens-utile/" rel="bookmark" title="Permanent Link: JavaFX &#8230; quelque liens utile">JavaFX &#8230; quelque liens utile</a></li></ul><hr /><small>Copyright &copy; 2008-2011 - Gaetan Grigis - <a href="http://blog.gaetan-grigis.eu">blog.gaetan-grigis.eu</a> </small>]]></content:encoded>
			<wfw:commentRss>http://blog.gaetan-grigis.eu/programmation/php-programmation/fork-et-php-utile/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>PHP chez les grandes entreprises grâce à Microsoft ?</title>
		<link>http://blog.gaetan-grigis.eu/programmation/php-chez-les-grandes-entreprises-grace-a-microsoft/</link>
		<comments>http://blog.gaetan-grigis.eu/programmation/php-chez-les-grandes-entreprises-grace-a-microsoft/#comments</comments>
		<pubDate>Sat, 27 Sep 2008 10:02:46 +0000</pubDate>
		<dc:creator>Gaëtan</dc:creator>
				<category><![CDATA[Programmation]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[techno]]></category>

		<guid isPermaLink="false">http://blog.gaetan-grigis.eu/?p=158</guid>
		<description><![CDATA[Et non &#8230; c&#8217;est pas une blague[EN], commenté par nexen[FR]. Rapide résumé-copié/coller : Selon le gartner group, 10% des développeurs PHP sont dans de grandes entreprise, et que ce chiffre pourrait monter à 40% dans les prochaines années. Une bonne nouvelle pour les devs comme moi . Mais c&#8217;est aussi une bonne nouvelle pour PHP [...]]]></description>
			<content:encoded><![CDATA[<p>Et non &#8230; c&#8217;est pas une <a href="http://blog.devx.com/2008/09/php-is-going-corporate-with-he.html">blague[EN]</a>, commenté par <a href="http://www.nexen.net/actualites/php/18754-zend,_adobe_et_microsoft_poussent_php_en_entreprise.php">nexen[FR]</a>.</p>
<p><strong>Rapide résumé-copié/coller : </strong></p>
<p>Selon le gartner group, 10% des développeurs PHP sont dans de grandes entreprise, et que ce chiffre pourrait monter à 40% dans les prochaines années. <em>Une bonne nouvelle pour les devs comme moi <img src='http://blog.gaetan-grigis.eu/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> .</em></p>
<p>Mais c&#8217;est aussi une bonne nouvelle pour PHP lui-même et les entreprises qui tournent autour (Zend, &#8230;). Il parait que lors de la dernière Zend conf, Microsoft ait même été un sponsors <em>platine</em> de PHP &#8230; grâce notamment à sa plateforme <a href="http://port25.technet.com/">open-source</a>, et à ces dernières améliorations pour le support du PHP : <em>(cf. premier lien pour plus d&#8217;info)</em>.</p>
<ul>
<li>Patch Adodb pour php</li>
<li>Un driver php pour SQL server</li>
<li>Un module FastCGI PHP pour IIS7 (le truc que cro$oft appel un serveur HTTP)</li>
<li>et un site web dédié au support windows pour PHP. (Microsoft viendrait tous juste de comprendre d&#8217;où venait les baisses d&#8217;utilisation du IIS??).</li>
</ul>
<p>A noté que Microsoft n&#8217;est pas la seule entreprise à s&#8217;intéresser à PHP &#8230;, il y a aussi IBM, Oracle et plus récemment Adobe &#8230; l&#8217;open-source vaincra ^^.</p>
<p>Selon Nexen, Microsoft bosserait déjà depuis un certain temps avec Zend sur PHP &#8230; <em>je suis sûr que Redmond à dit ça pour ne pas avoué qu&#8217;ils ont loupé le coche&#8230;</em></p>

                            <div id="aspdf">
                                <a href="http://blog.gaetan-grigis.eu/wp-content/plugins/as-pdf/generate.php?post=158">
                                    <span>Télécharger l'article au format PDF</span>
                                </a>
                            </div>
                        <hr /><h2>Articles similaires : </h2><ul><li><a href="http://blog.gaetan-grigis.eu/securite/cote-securite-cest-deja-noel/" rel="bookmark" title="Permanent Link: Côté sécurité, c&#8217;est déjà noël!!">Côté sécurité, c&#8217;est déjà noël!!</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/primary-domain-controller-sous-linux/" rel="bookmark" title="Permanent Link: Primary Domain Controller sous Linux &#8230;">Primary Domain Controller sous Linux &#8230;</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/detournement-de-dns-en-local-ou-comment-faire-un-audit-de-ses-dns/" rel="bookmark" title="Permanent Link: Détournement de DNS en local ou comment faire un audit de ses DNS.">Détournement de DNS en local ou comment faire un audit de ses DNS.</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/la-nouvelle-annee-commence-bien/" rel="bookmark" title="Permanent Link: La nouvelle année commence bien ^^">La nouvelle année commence bien ^^</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/administration/systeme-dalerte-via-sms-sur-vos-serveurs-grace-a-google-calendar/" rel="bookmark" title="Permanent Link: Système d&#8217;alerte via SMS sur vos serveurs grace à google calendar.">Système d&#8217;alerte via SMS sur vos serveurs grace à google calendar.</a></li></ul><hr /><small>Copyright &copy; 2008-2011 - Gaetan Grigis - <a href="http://blog.gaetan-grigis.eu">blog.gaetan-grigis.eu</a> </small>]]></content:encoded>
			<wfw:commentRss>http://blog.gaetan-grigis.eu/programmation/php-chez-les-grandes-entreprises-grace-a-microsoft/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Système d&#8217;alerte via SMS sur vos serveurs grace à google calendar.</title>
		<link>http://blog.gaetan-grigis.eu/systeme/administration/systeme-dalerte-via-sms-sur-vos-serveurs-grace-a-google-calendar/</link>
		<comments>http://blog.gaetan-grigis.eu/systeme/administration/systeme-dalerte-via-sms-sur-vos-serveurs-grace-a-google-calendar/#comments</comments>
		<pubDate>Sat, 27 Sep 2008 09:35:31 +0000</pubDate>
		<dc:creator>Gaëtan</dc:creator>
				<category><![CDATA[Administration]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[google calendar]]></category>

		<guid isPermaLink="false">http://blog.gaetan-grigis.eu/?p=154</guid>
		<description><![CDATA[Bijour à tous &#8230; Aujourd&#8217;hui, juste un lien vers le blog de macsim, (pour ceux qui ne l&#8217;aurait pas dans leurs RSS), qui à pondu un superbe script (PHP) pour utiliser le système d&#8217;évenement de Google Calendar, pour envoyer des SMS (et ajouter l&#8217;évenement dans Google Calendar), lors de diverses actions sur vos serveurs &#8230; [...]]]></description>
			<content:encoded><![CDATA[<p>Bijour à tous &#8230;</p>
<p>Aujourd&#8217;hui, juste un lien vers le blog de <a href="http://macsim.labolinux.net/index.php/post/2008/09/26/SmsAlert-2">macsim</a>, (pour ceux qui ne l&#8217;aurait pas dans leurs RSS), qui à pondu un superbe <a href="http://macsim.labolinux.net/public/Debian/smsalert/smsalert_v2.tar.gz">script (PHP)</a> pour utiliser le système d&#8217;évenement de Google Calendar, pour envoyer des SMS (et ajouter l&#8217;évenement dans Google Calendar), lors de diverses actions sur vos serveurs &#8230;</p>
<p>Pour l&#8217;installer il vous faut PHP-Cli, ainsi que l&#8217;extension Curl de PHP. (J&#8217;ai fait le tour du code &#8230; ça à l&#8217;air sérieux &#8230;, sauf peut-être l&#8217;utilisation de Curl &#8230; utiliser des Sockets, aurait permit de sauter cette extension, qui n&#8217;est pas installé chez tous les hébergeurs &#8230;).</p>
<p>J&#8217;vais peut être tenter d&#8217;améliorer le truc en faisant un plugins pour WordPress pour recevoir des SMS lorsque des commentaires sont postés ^^. (J&#8217;ai plus de commentaire indésirable que de réelle commentaire &#8230; donc ça ne sera surement pas utile ^^, mais pour le fun &#8230;).</p>

                            <div id="aspdf">
                                <a href="http://blog.gaetan-grigis.eu/wp-content/plugins/as-pdf/generate.php?post=154">
                                    <span>Télécharger l'article au format PDF</span>
                                </a>
                            </div>
                        <hr /><h2>Articles similaires : </h2><ul><li><a href="http://blog.gaetan-grigis.eu/programmation/php-programmation/envoyer-des-sms-via-google-calendar-et-php-socket-party/" rel="bookmark" title="Permanent Link: Envoyer des sms via google calendar et php &#8230; socket party ^^">Envoyer des sms via google calendar et php &#8230; socket party ^^</a></li><li><a href="http://blog.gaetan-grigis.eu/ubuntu/synchroniser-le-calendrier-evolution-et-google-agenda/" rel="bookmark" title="Permanent Link: Synchroniser le calendrier Evolution et Google Agenda">Synchroniser le calendrier Evolution et Google Agenda</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/administration/utiliser-google-app-pour-gerer-son-domaine/" rel="bookmark" title="Permanent Link: Utiliser Google App pour gérer son Domaine">Utiliser Google App pour gérer son Domaine</a></li><li><a href="http://blog.gaetan-grigis.eu/mes-applicationsscripts/" rel="bookmark" title="Permanent Link: Mes Applications/Scripts">Mes Applications/Scripts</a></li><li><a href="http://blog.gaetan-grigis.eu/programmation/php-programmation/mon-depot-svn-de-sources-inutiles/" rel="bookmark" title="Permanent Link: Mon dépôt SVN de sources inutiles">Mon dépôt SVN de sources inutiles</a></li></ul><hr /><small>Copyright &copy; 2008-2011 - Gaetan Grigis - <a href="http://blog.gaetan-grigis.eu">blog.gaetan-grigis.eu</a> </small>]]></content:encoded>
			<wfw:commentRss>http://blog.gaetan-grigis.eu/systeme/administration/systeme-dalerte-via-sms-sur-vos-serveurs-grace-a-google-calendar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Php: éviter les injections tout en préservant l&#8217;intégrité des données</title>
		<link>http://blog.gaetan-grigis.eu/programmation/php-programmation/php-eviter-les-injections-tout-en-preservant-lintegrite-des-donnees/</link>
		<comments>http://blog.gaetan-grigis.eu/programmation/php-programmation/php-eviter-les-injections-tout-en-preservant-lintegrite-des-donnees/#comments</comments>
		<pubDate>Sat, 16 Aug 2008 16:36:42 +0000</pubDate>
		<dc:creator>Gaëtan</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[Sécurité]]></category>

		<guid isPermaLink="false">http://www.php-engineering.info/blog-php/?p=89</guid>
		<description><![CDATA[Re bijour ^^ Encore une astuce à haute valeur philosophique &#8230; Rapide rappel : Pour éviter les SQL injections &#8230; la plupart du temps on fait appel à des addslashes, mysql_real_escape et &#8230; qui peuvent s&#8217;avérer dangeureuse suivant qu&#8217;on utilise du PHP5 ou PHP4 (et encore &#8230; la plupart du temps, il faut regarder les [...]]]></description>
			<content:encoded><![CDATA[<p>Re bijour ^^</p>
<p>Encore une astuce à haute valeur philosophique &#8230;</p>
<p><strong>Rapide rappel :</strong></p>
<p>Pour éviter les SQL injections &#8230; la plupart du temps on fait appel à des <em>addslashes</em>, <em>mysql_real_escape</em> et &#8230; qui peuvent s&#8217;avérer dangeureuse suivant qu&#8217;on utilise du PHP5 ou PHP4 (et encore &#8230; la plupart du temps, il faut regarder les sous-sous version), alors il faut faire des fonctions qui teste tout et n&#8217;importe quoi &#8230; mais on est jamais sûr que sur tel ou tel serveur le script est sécurisé &#8230;</p>
<p>Alors voici une rapide astuce qui permet d&#8217;assurer la sécurité et l&#8217;intégrité des données (qui peut fonctionner tant que l&#8217;on ne fait pas d&#8217;insertion ^^).</p>
<p>Utiliser du md5!!! ou un autre type de chiffrage via crypt, &#8230; qui vous permettront de préserver l&#8217;intégrité des données transportées tout en ne portant pas préjudice au serveur SQL.</p>
<p>Exemple lors du login d&#8217;une personne, la requête associée pourrait être :</p>
<blockquote><p>mysql_query(&laquo;&nbsp;select * from utilisateurs where login=&#8217;&nbsp;&raquo;.mysql_real_escape($_POST['login']).&nbsp;&raquo;&#8216;;&nbsp;&raquo;);</p></blockquote>
<p>donc si un jour on transfert ce code sur un serveur ayant php 4.2 &#8230; le script ne marche plus ^^ (d&#8217;accord &#8230; qui irait passer de php5 à php 4.2 -&gt; c&#8217;est pour l&#8217;exemple).</p>
<p>Par contre avec ce code :</p>
<blockquote><p>mysql_query(&laquo;&nbsp;select * from utilisateurs where MD5(login)=&#8217;&nbsp;&raquo;.md5($_POST['login']).&nbsp;&raquo;&#8216;;&nbsp;&raquo;);</p></blockquote>
<p>aucun problème &#8230; ^^ et vous êtes sûr que si ça renvoie une ligne ça soit la bonne <img src='http://blog.gaetan-grigis.eu/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</p>
<p>Bon comme dit dans l&#8217;introduction, il faut quand même insérer des données (et ouai ça arrive parfois :p), et là &#8230; ça ne marcherait plus trop à part si vous êtes billingue français/md5.</p>
<p>A propos de billinguisme français/md5, y&#8217;a un superbe logiciel qui permet de craquer du md5 de façon sympa et très rapide les md5 (md5brute : http://www.tuxemu.se.nu/)</p>

                            <div id="aspdf">
                                <a href="http://blog.gaetan-grigis.eu/wp-content/plugins/as-pdf/generate.php?post=89">
                                    <span>Télécharger l'article au format PDF</span>
                                </a>
                            </div>
                        <hr /><h2>Articles similaires : </h2><ul><li><a href="http://blog.gaetan-grigis.eu/systeme/administration/tentative-de-hack-quand-les-kikoolols-attaquent/" rel="bookmark" title="Permanent Link: Tentative de Hack &#8230; quand les kikoolols attaquent!!!">Tentative de Hack &#8230; quand les kikoolols attaquent!!!</a></li><li><a href="http://blog.gaetan-grigis.eu/securite/paranoia-sur-le-net/" rel="bookmark" title="Permanent Link: Paranoïa sur le net &#8230;^^">Paranoïa sur le net &#8230;^^</a></li><li><a href="http://blog.gaetan-grigis.eu/securite/de-lusb-en-grillade-destruction-de-peripherique-usb-a-la-volee/" rel="bookmark" title="Permanent Link: De l&#8217;USB en grillade ?? Destruction de périphériques USB à la volées">De l&#8217;USB en grillade ?? Destruction de périphériques USB à la volées</a></li><li><a href="http://blog.gaetan-grigis.eu/python-2/appengine-wordpress-et-xml-rpc/" rel="bookmark" title="Permanent Link: Appengine, WordPress et XML-RPC">Appengine, WordPress et XML-RPC</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/administration/mise-en-place-dun-cdn-via-google-app-engine/" rel="bookmark" title="Permanent Link: Mise en place d&#8217;un CDN via Google App Engine">Mise en place d&#8217;un CDN via Google App Engine</a></li></ul><hr /><small>Copyright &copy; 2008-2011 - Gaetan Grigis - <a href="http://blog.gaetan-grigis.eu">blog.gaetan-grigis.eu</a> </small>]]></content:encoded>
			<wfw:commentRss>http://blog.gaetan-grigis.eu/programmation/php-programmation/php-eviter-les-injections-tout-en-preservant-lintegrite-des-donnees/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

