¿Es un riesgo almacenar las variables de configuración en un archivo XML en un sitio PHP bajo la raíz del sitio?

StackOverflow https://stackoverflow.com/questions/605308

  •  03-07-2019
  •  | 
  •  

Pregunta

Me he dado cuenta de que Magento almacena los detalles de conexión de MySQL en un archivo XML que no está protegido por encima del docroot. Esto parece ... bien peligroso.

XML parece ser una forma útil de almacenar datos de configuración, excepto por una cosa, escribir http://www.domain.com.au/library/config.xml le mostrará al mundo sus datos privados.

Seguí adelante, usé un archivo XMl y lo agregué a mi archivo .htaccess.

<Files ~ "\.xml<*>quot;> // regex files that end with xml extension
Order allow,deny 
Deny from all // don't show them
</Files>

Ahora estaba feliz con esto, ahora no estoy muy seguro. ¿Qué sucede si el archivo .htaccess se borra / corrompe accidentalmente (eso sucede además del error humano) y qué sucede si algún día quiero colocar la aplicación en un servidor que no sea apache? ¿Todos los servidores tienen el equivalente a bloquear archivos XML, y si lo hacen, ¿pueden modificarse en una carpeta como la .htaccess (y no solo un archivo httpd.conf)?

Mi pregunta es ... ¿la conveniencia de XML (fácil de actualizar, los diseñadores que necesitan hacer modificaciones no se sentirán tan intimidados) superan los problemas potenciales (exponiendo datos privados)?

¿Fue útil?

Solución

Personalmente, solo almacenaría la información del archivo de configuración en un formato que no esté en un formato o ubicación directamente accesible. Entonces, o bien uso el formato XML encima del docroot o el formato PHP $ config ['varname'] = 'value'. El método posterior solo generaría una página en blanco en blanco si se llamara directamente (siempre que sea PHP y no contenga HTML y no haga eco).

Gallery, vBulletin y Joomla usan el segundo método que mencioné. Sé que he mencionado esos proyectos anteriormente en otras preguntas relacionadas con PHP, pero parece ser un método ampliamente utilizado y aceptado entre proyectos.

Otros consejos

Respuesta corta, no, no lo es. Pero una pregunta mejor sería. Si no está almacenado en un archivo de configuración, ¿dónde lo guardaría?

Estoy totalmente de acuerdo con inventix en esto, pero también ofrezco una tercera opción que debe combinarse con cualquiera de las dos

nombre el archivo que almacena la información de configuración

.htanything.whatever

como servidor en todo el servidor, todos los archivos que comienzan .ht son ilegibles para usuarios externos {Esta es la razón por la que htaccess siempre es .htaccess}

personaly solo almaceno los archivos de configuración que incluyen bibliotecas de funciones fuera de la raíz del documento, pero entiendo que algunos connot siempre usan la convención .htnaming en ellos también en caso de que la carpeta $ includes se mueva dentro del árbol de documentos por alguien que usa el software en dicho servidor

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top