¿Puede alguien ver el contenido de mi archivo .htaccess?

1

Estoy almacenando contraseñas con hash en un archivo llamado passwords.htaccess . Cuando un usuario completa un formulario de inicio de sesión, se comprueban las contraseñas. Estoy obteniendo el contenido de passwords.htaccess con file_get_contents('passwords.htaccess'); . ¿Hay alguna manera de que alguien más pueda leer el contenido de passwords.htaccess que no sea yo y el script de inicio de sesión?

Sé que cuando un usuario intenta escribir el nombre del archivo directamente, encuentra un error 403 forbidden , pero ¿hay alguna forma de evitar el error usando file_get_contents('http://www.mysite.com/passwords.htaccess') o algún otro método?

Si es así, ¿hay alguna otra manera de proteger las contraseñas de los usuarios?

    
pregunta DMVerfurth 19.04.2018 - 19:45
fuente

2 respuestas

1

(esto debería ser un comentario pero es un poco largo)

  

¿Puede alguien ver el contenido de mi archivo .htaccess

No podemos saberlo: depende de cómo esté configurado su sitio web. Tampoco especifica qué quiere decir con "cualquiera": si se ejecuta en un host web compartido con otros usuarios, es posible que también tengan acceso. En un sistema Unix, la cuenta raíz tendrá acceso ...

  

Se encuentran con un 403 prohibido

Luego, hay algo que impide que las personas accedan al archivo a través del servidor web. Las posibles protecciones que pueden estar en su lugar son ...

  • ubicación: el servidor web solo ofrecerá contenido de árboles de directorios configurados explícitamente. En su ejemplo, el archivo parece estar en el mismo lugar que el código. Dejando de lado una discusión de por qué es una muy mala idea, entonces si es relevante depende de si está ejecutando mod_php o php_fpm, y si el script que contiene el fragmento de código es un punto de entrada para la ejecución de PHP o si se incluye de otro script .

  • permisos del sistema de archivos: con php-fpm es bastante posible que PHP se ejecute como un uid diferente al servidor web

  • configuración específica en su servidor web: la mayoría proporciona un medio para excluir el acceso según la URL o el nombre del archivo (y, a menudo, permiten globs). Las configuraciones de Apache generalmente vienen con la configuración a continuación que impide el acceso a un archivo cuyo nombre comienza con '.ht' pero que no es aplicable a "passwords.htaccess".

     <Files ~ "^\.ht">
     Order allow,deny
     Deny from all
     Satisfy All
     </Files>
    

(y eso es antes de que consideremos cualquier vulnerabilidad en el sitio / plataforma)

Aparte de sus resultados empíricos, no tenemos ninguna base para poder responder a su pregunta. Podemos decir que el método de protección que tiene implementado no parece ser portátil de ninguna manera.

    
respondido por el symcbean 20.04.2018 - 12:33
fuente
0

Los archivos de contraseña SIEMPRE deben almacenarse fuera de la jerarquía de carpetas de su sitio web.

El motivo es que, si el servidor o el sitio se configuran incorrectamente en algún momento, los archivos dentro de la raíz de la carpeta del sitio estarán visibles. Por lo tanto, NUNCA se debe poner nada sensible.

Debes poner el archivo fuera de la carpeta raíz del sitio.

Debería ir sin decir que debe asegurarse de que las contraseñas estén bien ocultas para que no se pueda recuperar la contraseña real si se copia el archivo. Esto se debe a que, aunque el primer punto anterior garantiza que el servicio web no expondrá el archivo, cualquier persona con acceso al sistema de archivo del servidor (administradores y atacantes) probablemente podrá al menos leer el contenido del archivo. >     

respondido por el Julian Knight 20.04.2018 - 11:14
fuente

Lea otras preguntas en las etiquetas