Nonaktifkan daftar direktori dengan 404 bukan 403

9

Saya telah menonaktifkan daftar direktori seperti ...

Options -Indexes

Ketika saya mencoba dan mengakses direktori seperti ini: -

www.example.com/secret/

Saya mendapat respons Terlarang 403 .

Namun, saya ingin respons 404 Not Found , jadi peretas tidak dapat menebak struktur direktori saya dengan mudah. Bagaimana saya melakukannya?

Rik Heywood
sumber
Saya menyadari hal itu, tetapi tidak ada gunanya membuatnya mudah bagi siapa pun, terutama karena sangat sedikit upaya untuk membuatnya lebih sulit.
Rik Heywood

Jawaban:

8

Aktifkan mod_rewrite dan AllowOverride di / rahasia. Kemudian buat .htaccess:

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

Buat skrip 403 khusus yang mengembalikan kesalahan 404 sebagai gantinya.

Misalnya, dalam PHP:

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

Sekarang konfigurasikan Apache untuk menggunakan skrip ini untuk 403 hasil:

ErrorDocument 403 /403.php

Tidak main-main dengan penulisan ulang dan langsung berfungsi untuk seluruh server.

Gerald Schneider
sumber
Bukankah ini masih ditampilkan sebagai 403 untuk orang-orang yang menggunakan server?
IRGeekSauce
1
Tidak. Server akan menjawab dengan kesalahan 404 yang benar karena header()perintah.
Gerald Schneider
-1, karena pesan kesalahan khusus Anda mungkin! = Pesan kesalahan server Anda (baik itu nging atau apache atau apa pun). Ini adalah solusi terakhir jika tidak ada cara untuk mengkonfigurasi server Anda atau menggunakan file .htaccess. Selain itu solusi ini tidak akan mencegah Anda dari DirBustering situs web Anda, karena Anda masih dapat membedakan "pesan kesalahan khusus" dari pesan kesalahan server.
Awaaaaarghhh
0

Solusi saya untuk berhenti menampilkan konten direktori sebagai daftar dan menampilkan kesalahan 404 adalah sederhana. Buat file .htaccess di direktori root proyek Anda dan tulis direktori mana yang harus dilindungi.

Struktur direktori

- 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

Baris kedua .htaccess melarang akses ke daftar item dalam direktori aplikasi dan semua subridectoriesnya.

Baris ketiga .htaccess melarang akses ke daftar item dalam direktori models dan semua subridectories-nya.

Baris keempat dari .htaccess menetapkan kesalahan 404 kita sendiri (jika Anda tidak ingin menampilkan kesalahan default apache).

Ingatlah untuk menghapus cache pada browser Anda saat Anda bekerja dengan htaccess.

Tanpa nama
sumber
-2

Gunakan .htaccess untuk menutupi kesalahan. Lihat panduan ini:

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

ed209
sumber
3
Sementara ini secara teoritis dapat menjawab pertanyaan, akan lebih baik untuk memasukkan bagian-bagian penting dari jawaban di sini, dan menyediakan tautan untuk referensi. Tautan ini sekarang mati dan karenanya jawaban ini sekarang tidak berguna
Mark Henderson