Berikut ini skenarionya:
- Ada
index.php
file di folder root - beberapa file termasuk di
index.php
dalamnya yang ada diincludes
folder. - 1 file lainnya (
submit.php
) ada di folder root untuk aksi pengiriman formulir.
Saya ingin membatasi akses pengguna langsung ke file dalam includes
folder dengan htaccess. juga untuk submit.php
. Tetapi menyertakan akan berfungsi untuk index.php
file. Seperti, jika pengguna mengetik www.domain.com/includes/somepage.php
, itu akan membatasi itu (mungkin dialihkan ke halaman kesalahan).
Ini adalah
mod_rewrite
solusi berbasis murni :Ini akan menampilkan kesalahan terlarang untuk digunakan jika URI mengandung salah satu
/includes/
atau/submit.php
sumber
Dimungkinkan untuk menggunakan arahan File dan melarang akses ke semua file, lalu menggunakannya lagi untuk mengatur file yang dapat diakses:
sumber
Solusi berbasis mod_alias 1 liner:
Ini akan menampilkan kesalahan terlarang untuk / folder / file.php
sumber
^folder
.Jika saya mengerti benar Anda hanya ingin menolak akses ke folder include?
Htaccess dengan arahan 'DENY FROM ALL' yang ditempatkan di folder include akan berhasil.
sumber
Q Anda datang dalam dua bagian, baik solusi jeroen dan anubhava bekerja untuk bagian I - menolak akses ke / termasuk. anubhava juga berfungsi untuk bagian II. Saya lebih suka yang terakhir karena saya
DOCROOT/.htaccess
tetap menggunakan dan ini menjaga semua kontrol tersebut dalam satu file.Namun yang ingin saya diskusikan adalah konsep "menolak akses ke
submit.php
". Jika Anda tidak ingin menggunakansubmit.php
lalu mengapa harus di DOCROOT? Saya menduga bahwa jawabannya di sini adalah Anda menggunakannya sebagai target tindakan dalam beberapa bentuk dan hanya ingin dipecat ketika formulir dikirimkan dan tidak secara langsung, misalnya dari spambot.Jika ini benar maka Anda tidak dapat menggunakan bagian II anubhava karena ini akan menyebabkan formulir Anda gagal. Yang dapat Anda lakukan di sini adalah (i) dengan
.htaccess
cek untuk memastikan bahwa pengarah adalah halaman indeks Anda sendiri:Dan (ii) dalam generator form index.php PHP Anda menyertakan beberapa bidang tersembunyi untuk cap waktu dan validasi. Validasi dapat berupa, katakanlah, 10 karakter pertama dari MD5 cap waktu dan beberapa rahasia internal. Saat memproses kiriman, Anda dapat (i) memvalidasi cap waktu dan validasi, dan (ii) cap waktu berada dalam, katakanlah, 15 menit dari waktu saat ini.
Ini Anda dapat mencegah spamming sebagai satu-satunya cara praktis bahwa seorang spammer bisa mendapatkan timestamp / pasangan validasi yang valid adalah dengan mem-parsing formulir, tetapi goresan ini hanya akan memiliki waktu 15 menit.
sumber
Bergantung pada kemungkinan opsi lain yang ditetapkan pada level yang lebih tinggi, Anda mungkin perlu memasukkan yang berikut ini dalam file .htaccess Anda di direktori include Anda:
Saya mengalami hal ini ketika direktori atas mendefinisikan otentikasi dasar termasuk baris:
Ini mencegah penolakan saya agar tidak berlaku karena semua pengguna diautentikasi.
sumber
Anda dapat menambahkan perintah di bawah ini ke
.htaccess
fileIni akan menampilkan pesan "nothing is here" jika ada akses yang tidak sah.
Jika Anda ingin mengarahkan ulang dengan kode kesalahan ke halaman tertentu maka Anda dapat mendefinisikan perintah sebagai berikut:
Ini akan mengarahkan ulang ke
/errors/404.html
dan menampilkan halaman kustom tidak ditemukan layar.sumber