2010-06-14 16 views
9

He visto recomendaciones para almacenar algunos o todos los archivos de inclusión php en un lugar distinto del directorio raíz del documento web (nombre de usuario/public_html en mi caso) por la razón específica de proteger archivos php con información confidencial información (como conexión a la base de datos e información de acceso) en caso de que el servidor web deje de proteger los archivos php y se vuelvan 'visibles' para los que saben dónde buscar.Almacenamiento de archivos de comandos fuera de la raíz web

Me parece algo paranoico, pero supongo que las personas se han quemado mucho con esto antes, así que estoy dispuesto a aceptarlo. La sugerencia generalmente toma la forma de tener los archivos de inclusión en algo como '../include_files/', por lo que no está directamente en la raíz del documento y no es accesible directamente para los usuarios externos a través del servidor web.

Mi pregunta es esta: ¿existe una diferencia significativa en la seguridad entre ese camino y solo poner su directorio 'include_files' debajo de la raíz del documento y pegar un archivo .htaccess allí (con las entradas correspondientes)? ¿Poner un archivo .htaccess en '../include_files/' significa una mejora significativa allí?

TIA,

Monte

Respuesta

13

El uso de .htaccess agrega sobrecarga ya que Apache tiene otro elemento que debe verificar y procesar.

Mantener los archivos fuera de la raíz de la web no es ser paranoico, es una buena práctica. ¿Qué sucede si alguien accede directamente a uno de los archivos "incluir" y arroja errores reveladores porque no se cargaron todos los archivos de requisitos previos?

Cada archivo debe tener sus propias comprobaciones de seguridad para asegurarse de que se ejecuta en el entorno esperado. Cada archivo ejecutable en un área accesible en la web es un agujero de seguridad potencial.

+0

+1 para señalar la desventaja de rendimiento de .htaccess (también, si especifica AllowOverride None, Apache ni siquiera busca el archivo). Acordó sus otros puntos con respecto a mantener los archivos fuera de la raíz del documento; lleva unos minutos configurarlo (especialmente con un __autoload/spl_autoload_register), entonces ¿por qué no hacerlo? –

+0

el problema es: no se puede hacer eso en muchos/la mayoría de los servidores compartidos. ¿no? – docesam

+0

En mi experiencia, los hosts compartidos te dan un directorio con un directorio www que se establece como público. –

4

Realmente depende de lo que usted tiene en su include_files. Lo más importante es que coloque las credenciales que tenga fuera de la raíz del documento (inicios de sesión en la base de datos, etc.). Todo lo demás es realmente secundario y no importa mucho.

Si no desea que nadie el robo de su código fuente a continuación, tratar de seguir las convenciones de Zend:

application 
library 
public 

puntos DocumentRoot a public y que solo contiene archivos multimedia, js/css. HTML/views, db logic, conf/credentials están en application. Las bibliotecas de terceros están en library.

0

Teóricamente, si solo inserta un archivo .htaccess en la carpeta, aún podría tener los archivos .php llamados directamente.

Sacarlos de la raíz del servidor; sin embargo, impide que se acceda a siempre por alguien que esté navegando en su sitio web.

Cuestiones relacionadas