Deshabilite las listas de directorios con 404 en lugar de 403

9

He deshabilitado las listas de directorios así ...

Options -Indexes

Cuando intento acceder a un directorio como este:

www.example.com/secret/

Recibo una respuesta prohibida 403 .

Sin embargo, quiero una respuesta 404 No encontrado , por lo que los piratas informáticos no pueden adivinar mi estructura de directorios tan fácilmente. ¿Como podría hacerlo?

Rik Heywood
fuente
Me doy cuenta de eso, pero no tiene sentido facilitarlo a nadie, especialmente porque se necesita muy poco esfuerzo para hacerlo más difícil.
Rik Heywood

Respuestas:

8

Habilite mod_rewrite y AllowOverride en / secret. Luego crea .htaccess:

RewriteEngine On
RewriteBase   /secret
RewriteRule   ^$ - [R=404,L]
ooshro
fuente
1

Cree un script 403 personalizado que en su lugar devuelva un error 404.

Por ejemplo, en PHP:

<?php
header("HTTP/1.0 404 Not Found");
die("<h1>404 Not Found</h1>");
?>

Ahora configure Apache para usar este script para obtener 403 resultados:

ErrorDocument 403 /403.php

No te metas con reescrituras y funciona instantáneamente para todo el servidor.

Gerald Schneider
fuente
¿Esto todavía no se mostrará como un 403 para las personas que raspan el servidor?
IRGeekSauce
1
No. El servidor responderá con un error 404 correcto debido al header()comando.
Gerald Schneider
-1, porque su mensaje de error personalizado podría ser! = El mensaje de error del servidor (ya sea nging o apache o lo que sea). Esta es la última solución si no hay forma de configurar su servidor o usar archivos .htaccess. Además, esta solución no le impedirá DirBustering su sitio web, porque todavía puede distinguir tales "mensajes de error personalizados" de los mensajes de error del servidor.
Awaaaaarghhh
0

Mi solución para dejar de mostrar el contenido del directorio como lista y mostrar el error 404 es simple. Cree el archivo .htaccess en el directorio raíz de su proyecto y escriba qué directorios deben protegerse.

Estructura de directorios

- your_root_directory
  - .htaccess
  - 404.html
  - index.html 
  - app
    - other files I do not want to show
  - models
    - other files I do not want to show

.htaccess

RewriteEngine On
RewriteRule   ^app/ - [R=404,L]
RewriteRule   ^models/ - [R=404,L]

ErrorDocument 404 /your_root_directory/404.html

La segunda línea de .htaccess no permite el acceso a elementos de la lista en el directorio de aplicaciones y todos sus subdirectorios.

La tercera línea de .htaccess no permite el acceso a elementos de la lista en el directorio de modelos y todos sus subdirectorios.

El cuarto de la línea .htaccess establece nuestro propio error 404 (si no desea mostrar el error predeterminado de apache).

Recuerde borrar el caché en su navegador cuando trabaje con htaccess.

Sin nombre
fuente
-2

Use .htaccess para enmascarar errores. Ver esta guía:

http://www.tarahost.net/pages/web-design/29371.php

ed209
fuente
3
Si bien esto puede responder teóricamente la pregunta, sería preferible incluir aquí las partes esenciales de la respuesta y proporcionar el enlace para referencia. Este enlace ahora está muerto y, por lo tanto, esta respuesta ahora es inútil
Mark Henderson