¿Está redirigiendo en htaccess proporcionando suficiente seguridad para páginas sensibles?

12

Hice archivos con los datos de inicio de sesión de la base de datos MySQL. Usando .htaccess , redirijo a cada usuario de /Config/config.php a /index.php . Me pregunto si esto es lo suficientemente seguro, esto significa lo que sea suficiente para evitar que los usuarios vean /Config/config.php ?

    
pregunta vakus 05.03.2017 - 19:32
fuente

4 respuestas

28

Esto puede proporcionar una seguridad adecuada, si se configura correctamente.

Puedo pensar en una falla común: con Apache y las reglas de reescritura, a menudo es posible construir una URL que apunte al mismo archivo y no se redirija. Por ejemplo, la solicitud de redirecciones /Config/config.php , pero la solicitud de //Config//config.php no lo hace. Esto se debe a que la regla de reescritura coincide con una URL exacta, no con ninguna variación.

Otro error común al usar la redirección de seguridad es enviar el encabezado para redirigir, pero no evitar que la página se muestre. Un atacante puede acceder a las páginas eliminando el encabezado Location . Sin embargo, esto suele ser un error en la aplicación y no cuando se usa Apache para hacer la redirección.

Una mejor manera es colocar el archivo de configuración fuera de la raíz web. Entonces tienes index.php en un subdirectorio public , y config.php fuera de este directorio. Esto reduce la posibilidad de que exponga la configuración.

    
respondido por el Sjoerd 05.03.2017 - 20:44
fuente
11

La forma en que se configura config.php no debería permitir que las personas vean las credenciales, incluso si tuvieran acceso a este archivo a través del navegador web.

Considere el siguiente archivo de configuración, tomado de este ejemplo ;

<?php
return (object) array(
    'host' => 'localhost',
    'username' => 'root',
    'pass' => 'password',
    'database' => 'db' );
?>

Si un usuario navega directamente a esta página, será recibido con una pantalla en blanco. Esto se debe a que nada en este script realmente se imprime en la página. No se filtraría ninguna información.

Yo sugeriría que configures tu configuración de esta manera, de modo que si, por alguna razón, tu .htaccess falla, en realidad no importa.

    
respondido por el Shadow 06.03.2017 - 01:56
fuente
4

No.

Piense en los siguientes escenarios:

  1. Alguien reconfigura tu servidor y desactiva el redireccionamiento. Ups. Tu .htaccess ya no te protege.
  2. Alguien agrega una regla de redirección a la configuración del servidor que anula su regla de redirección en el archivo .htaccess. ¡No hay alegría!
  3. Alguien reconfigura tu servidor y desactiva los archivos htaccess. Nuevamente, ya no hay protección.
  4. Alguien elimina el archivo .htaccess por error. Nuevamente, ya no hay protección.

El número 4 me pasó hace unos años cuando estaba migrando a un servidor diferente. Olvidé copiar el archivo .htaccess. Afortunadamente, me di cuenta unas horas más tarde y no se hizo ningún daño. Pero los errores ocurren todo el tiempo. Deberías planear para ellos.

Todos estos problemas se aplican a cualquier solución que implementes utilizando archivos htaccess. Si tiene acceso a la configuración de su servidor, pondría sus directivas allí. También protegería su punto final de configuración con una capa adicional de autenticación básica HTTP (suponiendo que esté usando https para alcanzarlo, esto agrega una seguridad considerable).

Si config.php es de cosecha propia (en lugar de ser parte de un paquete de software de terceros), haría la redirección de la página de inicio de sesión dentro del script php .

    
respondido por el Pascal 05.03.2017 - 19:55
fuente
0

Como se ha señalado, solo la redirección no lo ayudará, ya que solo lo redireccionará cuando acceda a él a través del navegador, pero como ya sabe, aún se puede acceder al incluirlo en un archivo, como en php usando include y amp ; require que podrías estar haciendo ahora mismo. Si algún usuario puede cargar un archivo como este en su servidor, entonces no es un trabajo tan difícil. Por lo tanto, es mejor colocarlo fuera de la carpeta de su sitio web y no otorgar a .htaccess derechos completos mediante el uso de Allowoverride all .

También puede eliminar el acceso directo al directorio especificado si no es posible colocar fuera de public_html .

    
respondido por el Abhishek Gurjar 06.03.2017 - 14:48
fuente

Lea otras preguntas en las etiquetas