Melindungi kata sandi direktori, tetapi bukan file direktori itu?

8

Saya hanya ingin tahu apakah mungkin untuk melindungi direktori dengan kombinasi nama pengguna / kata sandi menggunakan file .htaccess dan .htpasswd, tetapi tidak melindungi file di dalamnya. yaitu One dapat menghubungkan, katakanlah, gambar-gambar di dalam direktori itu ke teman-teman, tetapi menjelajah direktori itu sendiri tidak akan diizinkan tanpa nama pengguna / kata sandi. Terima kasih untuk semuanya.

Ivo Flipse
sumber

Jawaban:

9

Coba ini di Anda .htaccess:

Require valid-user

<Files ?*>
    Order allow,deny
    Allow from all
    Satisfy any
</Files>

Di sini Require valid-userdiperlukan login yang dikenal. Kemudian Anda mengubah batasan ini untuk file dengan setidaknya satu karakter dalam namanya - inilah yang akan cocok dengan pola glob ?*untuk <Files>bagian -, yang secara efektif berarti aturan terlampir berlaku untuk file, tetapi tidak untuk direktori.

Dalam aturan amandemen untuk file, kuncinya adalah Satisfy any. Hal ini memungkinkan otorisasi untuk puas dengan baik kredensial atau alamat IP. Kemudian Anda mengizinkan alamat IP apa pun untuk lewat, sehingga permintaan selalu diotorisasi.

Jadi sekarang menjelajah direktori ini atau salah satu subdirektori akan memerlukan login, tetapi secara langsung mengambil file dari itu tidak akan.

Yang kamu inginkan.

Aristoteles Pagaltzis
sumber
0

Ya, Anda dapat mengamankan file dan direktori berdasarkan nama atau pola. Anda harus sudah menggunakan ini untuk membatasi akses ke file .ht *. Periksa konfigurasi apache Anda. Pola file yang diperlukan kemungkinan akan menjadi '/ $'.

BillThor
sumber
0

Gunakan LocationMatchuntuk membatasi hal-hal auth ke indeks direktori.

Marian
sumber
<LocationMatch "/ pictures"> AuthUserFile /home/asdasd/public_html/user5678/pictures/.htpasswd AuthGroupFile / dev / null AuthName "Restricted Directory" AuthType Basic </LocationMatch> <batas DAPATKAN POST> memerlukan pengguna-valid </Limit> Ini adalah file .htaccess saya saat ini, terletak di / gambar. Apakah ada yang salah yang saya lakukan? Ini sepertinya mengembalikan 500 Server Internal Kesalahan.
a) baca tentang LocationMatch, itu membutuhkan regex. b) Kamu tentu saja harus meletakkan bagian require valid-userdalam LocationMatchbloknya (mengapa Limitpernyataannya?)
Marian
0

Anda hanya ingin mematikan menampilkan Apache indeks folder. Letakkan ini di .htaccess:

Options -Indexes

Dengan cara ini ketika Pengguna mengunjungi http://www.url.com/folder/, mereka mendapatkan daftar Direktori ditolak kesalahan. Tetapi ketika mereka mengunjungi http://www.url.com/folder/file.jpgmereka dapat melihat file.

Pascal
sumber
1
Ini bukan diminta, menonaktifkan daftar ini, bukan kata sandi yang melindunginya
Krzysztof Bociurko
-1

Jika Anda ingin cantuman direktori hanya dapat dilihat oleh pengguna yang diotorisasi tetapi memperbolehkan siapa pun untuk mengunduh file (sehingga Anda dapat mengirim tautan orang), maka Anda memerlukan skrip jenis tertentu (PHP, ASP, dll.) Yang meminta pengguna untuk kata sandi dan jika mereka benar menampilkan isi direktori. Anda akan meletakkan skrip ini di direktori dan menamakannya sebagai index.php sehingga dilayani daripada apache menghasilkan indeks direktori.

Daisetsu
sumber
-1

Iya. Tambahkan file index.html yang berisi daftar isi folder dan batasi akses ke file tersebut dengan .htaccess. Jika Anda ingin indeks menjadi dinamis, Anda harus menggunakan semacam skrip (atau sisi server termasuk) untuk menghasilkan indeks.

Chris Nava
sumber
-2

Lakukan chmod 777 pada file, tetapi tidak pada folder utama.

Christoffer Madsen
sumber
2
Tidak, bukan ini.
Ignacio Vazquez-Abrams