2009-11-30 25 views
6

¿No es malo tener todos los archivos a la vista del público?¿Por qué los archivos de la aplicación CodeIgniter se encuentran en la carpeta public_html?

Seguramente cosas tales como /system/application/config/database.php no debe ser visible para el público!

+1

Sí, ya he visto a CI. Me preguntaba por qué esta configuración insegura era la predeterminada. Parece que es puramente fácil de usar recién salido de la caja. # 2 PHP no siempre se analiza, posiblemente debido a un error del administrador (vea el comentario de Frank Farmer, abajo) # 3 Vea # 2 – Matthew

Respuesta

26

Los desarrolladores de CodeIgniter, EllisLabs, han establecido el marco de esta manera para facilitar su uso. Significa que las personas que deseen probar el marco no tienen que jugar con ninguna configuración de permisos en su servidor.

Por supuesto en un servidor de producción, tiene toda la razón, poniendo sus archivos PHP en la carpeta HTML público no es una buena idea.

Una mejor manera de organizar sus carpetas serían:

  • raíz
    • code_igniter controladores
      • application_folder
        • config
        • modelos
        • ...
      • system_folder
    • public_html
      • css
      • js
      • imágenes index.php .htaccess

El único otro cambio a realizar aquí habría que cambiar la línea 26 del index.php para que diga:

$system_folder = "../../code_igniter/system-folder"; 
+0

También me gusta sacar la carpeta de la aplicación de la carpeta CodeIgniter. Raramente toco la fuente de CodeIgniter y esto me ahorra un nivel de anidación. – MiseryIndex

+0

también significa que puede reutilizar el código de instalación del encendedor para otra aplicación sin replicarlo en su propio directorio – Matthew

+2

con esta configuración también necesita cambiar $ application_folder en index.php del valor predeterminado –

0

Acceso a los archivos dentro de/system/desde un navegador no lo hará revelar ninguna información sensible, debido a que el PHP será analizada y nada se emite desde esos archivos (archivos de sistema IC incluso puede comprobar para ver si una variable se ha definido que indica que el archivo no se ha accedido directamente).

Dicho esto, sin embargo, probablemente debería instalar la carpeta de todo el sistema por encima de web raíz de todos modos.

+3

Desafortunadamente, a veces, PHP no se analiza - generalmente debido a un error del administrador. Así es como toda la fuente de Facebook se filtró hace un tiempo. Es por eso que debes mantener todo fuera de los caminos accesibles al mundo para empezar. Es la diferencia entre bloquear tus objetos de valor en tu guantera y no dejarlos en el auto en primer lugar. –

0

Siempre se puede colocar el directorio del sistema fuera del directorio público. No olvide actualizar las rutas dentro del controlador frontal (index.php).

6

Puede agregar la siguiente regla a su.htaccess para proteger aún más los directorios del sistema y de las aplicaciones de ser vistos (envía un error 403 Prohibido):

# Protect application and system files from being viewed 
RewriteRule ^(application|system) - [F,L] 
+0

¿Qué hace [F, L] en realidad aquí? – Matthew

+1

F agrega un encabezado (403 prohibido) y L simplemente evita que se procesen otras reglas. –

1

Con esta estructura:

/application 
/system 
/public 
    index.php 

Usted puede cambiar en public/index.php estos dos ajustes y que son hecho

$application_folder = '../application'; 
$system_path = '../system'; 
1
respuesta de

Jon Winstanley es perfecto, también no se olvide de asegurar carpeta de la carga de archivos, o si tiene nordeste. Lo hice moviéndolo también fuera de la raíz pública, y obtengo las imágenes usando el siguiente código:

<?php 
// $details = getimagesize($_GET["path"] . '/' . $_GET["image"]); 
$details = getimagesize($_GET["path"] . strip_tags($_GET["image"])); 
header ('Content-Type: ' . $details['mime']); 
readfile($_GET["path"] . strip_tags($_GET["image"])); 
exit; 
?> 
+0

por supuesto, antes de que desinfectemos $ _GET array ejecutando a través de cada elemento – serdarsenay

Cuestiones relacionadas