<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.1.3" -->
<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/"
	>

<channel>
	<title>abc-webs.net laboratorio de código libre</title>
	<link>http://labs.abc-webs.net</link>
	<description>laboratorio de código libre</description>
	<pubDate>Tue, 06 Nov 2007 12:45:24 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.1.3</generator>
	<language>en</language>
			<item>
		<title>protege tu aplicación de exploits relacionados con include()</title>
		<link>http://labs.abc-webs.net/2007/06/05/protege-tu-aplicacion-de-exploits-relacionados-con-include/</link>
		<comments>http://labs.abc-webs.net/2007/06/05/protege-tu-aplicacion-de-exploits-relacionados-con-include/#comments</comments>
		<pubDate>Tue, 05 Jun 2007 11:17:16 +0000</pubDate>
		<dc:creator>jorge albaladejo</dc:creator>
		
		<category><![CDATA[Programación]]></category>

		<category><![CDATA[Php]]></category>

		<category><![CDATA[seguridad]]></category>

		<guid isPermaLink="false">http://labs.abc-webs.net/2007/06/05/protege-tu-aplicacion-de-exploits-relacionados-con-include/</guid>
		<description><![CDATA[Como hemos visto en capítulos anteriores sobre problemas de seguridad y sql injection, hay una serie de aspectos relacionados con la seguridad a tener en cuenta a la hora de diseñar una aplicación web. Uno de los más explotados es la falla abierta por un uso indebido de la función de php include().
Veamos un ejemplo:
&#60;a [...]]]></description>
			<content:encoded><![CDATA[<p>Como hemos visto en capítulos anteriores sobre <a href="http://labs.abc-webs.net/2007/05/21/seguridad-en-scripts-y-aplicaciones-php/" title="problemas de seguridad y sql injection">problemas de seguridad y sql injection</a>, hay una serie de aspectos relacionados con la seguridad a tener en cuenta a la hora de diseñar una aplicación web. Uno de los más explotados es la falla abierta por un uso indebido de la función de php include().</p>
<p>Veamos un ejemplo:<br />
<code>&lt;a href="?page=home.php"&gt;Inicio&lt;/a&gt; | &lt;a href="?page=contact.php"&gt;Contacto&lt;/a&gt;<br />
&lt;?php<br />
$page = $_GET['page'];<br />
if ($page)<br />
include $page;<br />
else<br />
echo "404, página no encontrada";<br />
?&gt;</code></p>
<p>En el ejemplo anterior, pasamos como variable &#8216;page&#8217; el nombre del archivo (php en este caso, podría ser html u otra extensión), que será cargado en la línea correspondiente mediante &#8216;include&#8217;. La ausencia de filtrado de esta variable puede dejar nuestra aplicación prácticamente a merced de cualquier intruso poco experimentado, veamos por qué.<br />
 <a href="http://labs.abc-webs.net/2007/06/05/protege-tu-aplicacion-de-exploits-relacionados-con-include/#more-9" class="more-link">(more&#8230;)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://labs.abc-webs.net/2007/06/05/protege-tu-aplicacion-de-exploits-relacionados-con-include/feed/</wfw:commentRss>
		</item>
		<item>
		<title>formateado de datos en xml</title>
		<link>http://labs.abc-webs.net/2007/05/26/formateado-de-datos-en-xml/</link>
		<comments>http://labs.abc-webs.net/2007/05/26/formateado-de-datos-en-xml/#comments</comments>
		<pubDate>Sat, 26 May 2007 21:32:30 +0000</pubDate>
		<dc:creator>jorge albaladejo</dc:creator>
		
		<category><![CDATA[Programación]]></category>

		<category><![CDATA[Php]]></category>

		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://labs.abc-webs.net/2007/05/26/formateado-de-datos-en-xml/</guid>
		<description><![CDATA[Ahora que ya he explicado cómo crear una clase en php para leer datos de una base de datos, y que también conocemos las bases del lenguaje xml, vamos a crear una clase para formatear estos datos en xml. De este modo, podremos compartir datos entre distintos tipos de aplicaciones, sin necesidad de tener acceso [...]]]></description>
			<content:encoded><![CDATA[<p>Ahora que ya he explicado <a href="http://labs.abc-webs.net/2007/05/24/clase-dbhandler-para-manejar-datos-de-una-base-de-datos/" title="clase dbhandler para manejar datos de la base de datos">cómo crear una clase en php para leer datos</a> de una base de datos, y que también conocemos las bases del lenguaje xml, vamos a crear una clase para formatear estos datos en xml. De este modo, podremos compartir datos entre distintos tipos de aplicaciones, sin necesidad de tener acceso al servidor de bases de datos más que en una de ellas: la pasarela de datos.</p>
<p>Una vez formateamos en correcto xml, podemos ofrecer un documento como xml puro para aplicaciones externas que quieran utilizar nuestros datos, o un rss estándar para que nuestros visitantes sincronicen las noticias del sitio; podemos también ofrecer un servicio soap para aplicaciones que no sólo precisen nuestros datos sino también funciones y servicios avanzados; o podemos simplemente adjuntar una hoja de estilos xls y mostrar nuestro documento en un navegador, como lo haríamos con xhtml y css. Bastante útil, ¿no?<br />
 <a href="http://labs.abc-webs.net/2007/05/26/formateado-de-datos-en-xml/#more-7" class="more-link">(more&#8230;)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://labs.abc-webs.net/2007/05/26/formateado-de-datos-en-xml/feed/</wfw:commentRss>
		</item>
		<item>
		<title>clase dbhandler para manejar datos de una base de datos</title>
		<link>http://labs.abc-webs.net/2007/05/24/clase-dbhandler-para-manejar-datos-de-una-base-de-datos/</link>
		<comments>http://labs.abc-webs.net/2007/05/24/clase-dbhandler-para-manejar-datos-de-una-base-de-datos/#comments</comments>
		<pubDate>Thu, 24 May 2007 09:34:45 +0000</pubDate>
		<dc:creator>jorge albaladejo</dc:creator>
		
		<category><![CDATA[Programación]]></category>

		<category><![CDATA[Php]]></category>

		<guid isPermaLink="false">http://labs.abc-webs.net/2007/05/24/clase-dbhandler-para-manejar-datos-de-una-base-de-datos/</guid>
		<description><![CDATA[Hemos visto en publicaciones anteriores cómo conectar a una base de datos mysql desde php, y cómo usar la función mysql_query para consultar datos. También hemos visto algunas nociones de seguridad en scripts y aplicaciones php. Ahora vamos a ver cómo encapsular estas funciones en una práctica clase que nos permitirá instanciar objetos dbhandler y [...]]]></description>
			<content:encoded><![CDATA[<p>Hemos visto en publicaciones anteriores <a href="http://labs.abc-webs.net/2007/05/18/conexion-a-una-base-de-datos-mysql/" title="Cómo conectar a una base de datos mysql desde php">cómo conectar a una base de datos mysql desde php</a>, y <a href="http://labs.abc-webs.net/2007/05/19/lectura-de-una-tabla-de-una-base-de-datos/" title="Cómo usar la función mysql_query para consultar datos">cómo usar la función mysql_query para consultar datos</a>. También hemos visto <a href="http://labs.abc-webs.net/2007/05/21/seguridad-en-scripts-y-aplicaciones-php/" title="seguridad en scripts y aplicaciones php">algunas nociones de seguridad</a> en scripts y aplicaciones php. Ahora vamos a ver cómo encapsular estas funciones en una práctica clase que nos permitirá instanciar objetos dbhandler y trabajar cómodamente con ellos.</p>
<p>Parto de  que el lector tiene al menos una ligera idea del paradigma de la <a href="http://es.wikipedia.org/wiki/Programaci%C3%B3n_orientada_a_objetos" title="Programación Orientada a Objetos">Programación Orientada a Objetos</a>. Básicamente, un clase es un molde que tiene ciertas peculiaridades como métodos y atributos, que pueden ser públicos (de libre acceso) o privados (sólo accesibles dentro de la propia clase). Con esta clase, se pueden instanciar objetos pertenecientes a dicha clase. si estuviéramos en la arena de la playa con un cubo, el cubo sería la clase, y las torres de arena serían los objetos o instancias del cubo de playa.</p>
<p> <a href="http://labs.abc-webs.net/2007/05/24/clase-dbhandler-para-manejar-datos-de-una-base-de-datos/#more-5" class="more-link">(more&#8230;)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://labs.abc-webs.net/2007/05/24/clase-dbhandler-para-manejar-datos-de-una-base-de-datos/feed/</wfw:commentRss>
		</item>
		<item>
		<title>seguridad en scripts y aplicaciones php</title>
		<link>http://labs.abc-webs.net/2007/05/21/seguridad-en-scripts-y-aplicaciones-php/</link>
		<comments>http://labs.abc-webs.net/2007/05/21/seguridad-en-scripts-y-aplicaciones-php/#comments</comments>
		<pubDate>Mon, 21 May 2007 10:24:51 +0000</pubDate>
		<dc:creator>jorge albaladejo</dc:creator>
		
		<category><![CDATA[Programación]]></category>

		<category><![CDATA[Php]]></category>

		<category><![CDATA[seguridad]]></category>

		<guid isPermaLink="false">http://labs.abc-webs.net/2007/05/21/seguridad-en-scripts-y-aplicaciones-php/</guid>
		<description><![CDATA[Hemos visto en publicaciones anteriores cómo conectar a una base de datos mysql desde php, y cómo usar la función mysql_query para consultar datos.
Ahora vamos a hablar de seguridad en php. La aparente sencillez de uso de php muchas veces oculta su potencia, y no tener en cuenta ciertos detalles puede hacer que nuestra aplicación [...]]]></description>
			<content:encoded><![CDATA[<p>Hemos visto en publicaciones anteriores <a href="http://labs.abc-webs.net/2007/05/18/conexion-a-una-base-de-datos-mysql/" title="Cómo conectar a una base de datos mysql desde php">cómo conectar a una base de datos mysql desde php</a>, y <a href="http://labs.abc-webs.net/2007/05/19/lectura-de-una-tabla-de-una-base-de-datos/" title="Cómo usar la función mysql_query para consultar datos">cómo usar la función mysql_query para consultar datos</a>.</p>
<p>Ahora vamos a hablar de <strong>seguridad </strong>en php. La aparente sencillez de uso de php muchas veces oculta su potencia, y no tener en cuenta ciertos detalles puede hacer que nuestra aplicación se vaya al traste con un solo &#8216;click&#8217;. Recordemos nuestra anterior función readTable</p>
<p><code>/* consulta los campos seleccionados de una tabla concreta de la base de datos<br />
*@param table la tabla concreta<br />
*@param fields los campos a consultar<br />
*/<br />
function readTable($table,$fields,$identifier)<br />
{<br />
//variables<br />
$resultsArray = array();<br />
//campos<br />
$fieldsList = "";<br />
foreach($fields as $key=&gt;$value)<br />
{<br />
$fieldsList .= $value . ",";<br />
}<br />
//quitamos la última coma<br />
$fieldsList = substr($fieldsList,0,strlen($fieldsList)-1);<br />
//consulta<br />
$query = "SELECT " . $fieldsList . " FROM " . $table;<br />
$resultset = @mysql_query($query,$identifier);<br />
if (@mysql_num_rows($resultset) &gt; 0)<br />
{<br />
$i = 0;<br />
while ($result = mysql_fetch_array($resultset))<br />
{<br />
$resultsArray[$i] = $result ;<br />
$i++;<br />
}<br />
}<br />
return($resultsArray);<br />
}<br />
</code></p>
<p>Resumiendo, la llamada a la función readTable(&#8217;superheroes&#8217;,$fields,$token); podría permitir ejecutar código sql que no deseamos, y que podría dejar al aire nuestra aplicación.</p>
<p> <a href="http://labs.abc-webs.net/2007/05/21/seguridad-en-scripts-y-aplicaciones-php/#more-6" class="more-link">(more&#8230;)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://labs.abc-webs.net/2007/05/21/seguridad-en-scripts-y-aplicaciones-php/feed/</wfw:commentRss>
		</item>
		<item>
		<title>lectura de datos de una base de datos</title>
		<link>http://labs.abc-webs.net/2007/05/19/lectura-de-una-tabla-de-una-base-de-datos/</link>
		<comments>http://labs.abc-webs.net/2007/05/19/lectura-de-una-tabla-de-una-base-de-datos/#comments</comments>
		<pubDate>Sat, 19 May 2007 20:06:27 +0000</pubDate>
		<dc:creator>jorge albaladejo</dc:creator>
		
		<category><![CDATA[Programación]]></category>

		<category><![CDATA[Php]]></category>

		<guid isPermaLink="false">http://labs.abc-webs.net/2007/05/19/lectura-de-una-tabla-de-una-base-de-datos/</guid>
		<description><![CDATA[Ya he explicado en otro post cómo conectar a una base de datos mysql desde php. Ahora voy a explicar cómo trabajar con esta base de datos, en concreto mostrar los datos de una tabla.
Parto de la premisa de que se ha aprendido a utilizar el script anteriormente citado para la conexión y selección de [...]]]></description>
			<content:encoded><![CDATA[<p>Ya he explicado en otro post <a href="http://labs.abc-webs.net/2007/05/18/conexion-a-una-base-de-datos-mysql/" title="Cómo conectar a una base de datos mysql desde php">cómo conectar a una base de datos mysql desde php</a>. Ahora voy a explicar cómo trabajar con esta base de datos, en concreto mostrar los datos de una tabla.</p>
<p>Parto de la premisa de que se ha aprendido a utilizar el script anteriormente citado para la conexión y selección de base de datos, y que se ha configurado correctamente para acceder a una BD donde existe la tabla &#8217;superheroes&#8217;, con los campos &#8216;id&#8217;, &#8216;name&#8217;, &#8217;special_powers&#8217;.</p>
<p><strong>Vamos allá</strong> <strong>: </strong>leemos los datos de la tabla. Para ello, usamos la función php mysql_query(); para ejecutar código sql en el servidor de bases de datos. Vamos a leer los campos importantes (en este caso, los tres) de la tabla superheroes.</p>
<p><code>$query = "SELECT id, name, special_powers FROM superheroes";<br />
$resultset = @mysql_query($query,$identifier);<br />
if (@mysql_num_rows($resultset) &gt; 0)<br />
{<br />
while ($result = mysql_fetch_array($resultset))<br />
{<br />
echo $result['id'] . ' | ' . $result['name'] . ' | ' . $result['special_powers'] . '&lt;br /&gt;'  ;<br />
}<br />
}</code></p>
<p> <a href="http://labs.abc-webs.net/2007/05/19/lectura-de-una-tabla-de-una-base-de-datos/#more-4" class="more-link">(more&#8230;)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://labs.abc-webs.net/2007/05/19/lectura-de-una-tabla-de-una-base-de-datos/feed/</wfw:commentRss>
		</item>
		<item>
		<title>conexión a una base de datos mysql</title>
		<link>http://labs.abc-webs.net/2007/05/18/conexion-a-una-base-de-datos-mysql/</link>
		<comments>http://labs.abc-webs.net/2007/05/18/conexion-a-una-base-de-datos-mysql/#comments</comments>
		<pubDate>Fri, 18 May 2007 23:23:44 +0000</pubDate>
		<dc:creator>jorge albaladejo</dc:creator>
		
		<category><![CDATA[Programación]]></category>

		<category><![CDATA[Php]]></category>

		<guid isPermaLink="false">http://labs.abc-webs.net/2007/05/18/conexion-a-una-base-de-datos-mysql/</guid>
		<description><![CDATA[El primer paso para trabajar con scripts y aplicaciones en php que conectan con bases de datos mysql, es crear una conexión. Una conexión en php devuelve un identificador que será utilizado para cada transacción, consulta, etc, que se realice sobre la base de datos.
Para comenzar, hacen falta tres datos del proveedor de servicios de [...]]]></description>
			<content:encoded><![CDATA[<p>El primer paso para trabajar con scripts y aplicaciones en php que conectan con bases de datos mysql, es crear una conexión. Una conexión en php devuelve un identificador que será utilizado para cada transacción, consulta, etc, que se realice sobre la base de datos.</p>
<p>Para comenzar, hacen falta tres datos del proveedor de servicios de alojamiento: nombre de la base de datos, nombre de usuario y contraseña de acceso. En php desde la versión 3 existe la función mysql_connect();</p>
<p><code>mysql_connect($host,$usuario,$clave);</code></p>
<p> <a href="http://labs.abc-webs.net/2007/05/18/conexion-a-una-base-de-datos-mysql/#more-3" class="more-link">(more&#8230;)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://labs.abc-webs.net/2007/05/18/conexion-a-una-base-de-datos-mysql/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
