<?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>Codigolinea &#187; seguridad en archivos ini</title>
	<atom:link href="http://codigolinea.com/tag/seguridad-en-archivos-ini/feed/" rel="self" type="application/rss+xml" />
	<link>http://codigolinea.com</link>
	<description>free programing</description>
	<lastBuildDate>Sun, 13 Feb 2011 23:56:17 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>Proteger nuestros archivos .INI en Zend Framework</title>
		<link>http://codigolinea.com/2008/08/10/proteger-nuestros-archivos-ini-en-zend-framework/</link>
		<comments>http://codigolinea.com/2008/08/10/proteger-nuestros-archivos-ini-en-zend-framework/#comments</comments>
		<pubDate>Mon, 11 Aug 2008 00:46:49 +0000</pubDate>
		<dc:creator>Benjamín</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[asegurando los ini]]></category>
		<category><![CDATA[configuración]]></category>
		<category><![CDATA[ini]]></category>
		<category><![CDATA[proteger archivos ini]]></category>
		<category><![CDATA[seguridad]]></category>
		<category><![CDATA[seguridad en archivos ini]]></category>
		<category><![CDATA[zend_config_ini]]></category>

		<guid isPermaLink="false">http://codigolinea.com/?p=17</guid>
		<description><![CDATA[Los archivos .INI sirven para almacenar parámetros de configuración y por su sencillez es muy utilizado por la mayoría de aplicaciones. Zend Framework nos ofrece un componente para poder leerlos, llamado Zend_Config_Ini el cual esta apoyado en el parse_ini_file() de PHP. Al ser archivos planos es fácil de leerlos, incluso a través del navegador web [...]]]></description>
			<content:encoded><![CDATA[<p>Los archivos <strong>.INI</strong> sirven para almacenar parámetros de configuración y por su sencillez es muy utilizado por la mayoría de aplicaciones.</p>
<p>Zend Framework nos ofrece un componente para poder leerlos, llamado Zend_Config_Ini el cual esta apoyado en el parse_ini_file() de PHP. </p>
<p>Al ser archivos planos es fácil de leerlos, incluso a través del navegador web y eso lo hace muy vulnerable, ya que si no esta correctamente protegido, cualquiera puede leer nuestros parámetros de configuración y acceder a contraseñas, rutas de archivos, entre otras cosas.</p>
<p>Nuestros archivos <strong>.INI</strong> siempre deberían estar ubicados por encima del la raíz    <strong> web </strong> de nuestro servidor.</p>
<p>Supongamos que tenemos la siguiente distribución de carpetas de nuestra aplicación</p>
<pre class="brush: plain; title: ;">
application/
    config/
         database.ini
    controllers/
    models/
    views/
        scripts/
        helpers/
        filters/
   web/
    .htaccess
    index.php
</pre>
<p>Todo lo contenido dentro de <strong>application</strong> debería estar estar fuera del acceso vía web, eso sería  lo ideal, pero no siempre es así, ya que puede ocurrir que nos encontremos en un entorno donde no podemos contar con dichas facilidades, entonces debemos tomar las precauciones del caso.</p>
<p>Supongamos que estamos trabajando  en un <strong>subdominio</strong>, o en una carpeta por debajo del árbol de la <strong>web</strong>, la distribución de carpetas de nuestra aplicación sería algo parecido a esto.</p>
<pre class="brush: php; title: ;">
web/my_aplication/
			application/
				config/
			    	database.ini
			    controllers/
			    models/
			    views/
			    	scripts/
			        helpers/
			        filters/
			   html/
			   	index.php
			.htaccess
</pre>
<p>Quedaríamos expuestos y solo protegidos por las reglas declaradas dentro del <strong>.htaccess</strong>, ¿entonces que más podemos hacer?.</p>
<p>La solución es bien sencilla, consiste en convertir a nuestros archivos <strong>.ini</strong>  en archivos <strong>.php</strong> y poner toda la información dentro de  comentarios, de esa manera no podrán ser visualizados.</p>
<p><strong>database.ini.php</strong></p>
<pre class="brush: php; title: ;">
/*
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Configuration Database  ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; Production site configuration data
[production]
webhost                        = www.codigolinea.com
database.adapter         	= pdo_mysql
database.params.host      	= localhost
database.params.username  	= dbuser
database.params.password  	= secret
database.params.dbname    	= myDB
database.params.profiler	= false
*/
</pre>
<p>Y lo usamos como cualquier otro archivo <strong>.INI </strong></p>
<pre class="brush: php; title: ;">
require_once 'Zend/Config/Ini.php';

$config = new Zend_Config_Ini('database.ini.php', 'production');

echo $config-&gt;database-&gt;params-&gt;host;   // prints &quot;localhost&quot;
echo $config-&gt;database-&gt;params-&gt;dbname; // prints &quot;myDB&quot;
</pre>
<p>Así de sencillo, yo siempre lo uso de esa manera, y me quito la preocupación de que si algo falla, alguien pueda acceder a dicho fichero y leerlo.</p>
<p>Hay muchas otras soluciones a nivel de Servidor ¿pero si no tenemos acceso?, o usando la configuración a través de arrays(), pero la idea es no perder la simplicidad de los archivos <strong>.INI</strong>. </p>
]]></content:encoded>
			<wfw:commentRss>http://codigolinea.com/2008/08/10/proteger-nuestros-archivos-ini-en-zend-framework/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

