Saya sudah mulai menggunakan git untuk penyebaran situs web untuk pengujian. Bagaimana cara saya mencegah apache menyajikan konten direktori .git?
Saya mencoba
<Directorymatch "^/.*/\.svn/">
Order deny,allow
Deny from all
</Directorymatch>
tanpa keberhasilan.
Saya tahu bahwa saya dapat membuat file .htaccess di setiap direktori .git dan menolak akses, tetapi saya menginginkan sesuatu yang dapat saya masukkan ke file konfigurasi utama yang menjadikannya global di semua situs web.
apache-2.2
git
Shoan
sumber
sumber
Jawaban:
Ini tidak berfungsi karena Anda memiliki 'svn' dan tidak 'git' dalam aturan. Yang harus Anda lakukan adalah mengganti 'svn' dengan 'git'.
sumber
<DirectoryMatch /\.git/>
Ini memiliki efek yang sama dengan banyak jawaban lain tetapi jauh lebih sederhana:
Ini bisa masuk ke
.htaccess
atau file konfigurasi server Anda. Itu menyembunyikan file atau direktori yang namanya dimulai dengan.git
(misalnya.git
direktori atau.gitignore
file) dengan mengembalikan 404. Jadi tidak hanya konten repo Git Anda disembunyikan, keberadaannya juga tersembunyi.sumber
.git
folder - folder itu masih akan terlihat, tetapi Anda akan mendapatkan 404 ketika Anda mencoba mengaksesnya.Jika Anda tidak menggunakan file .htaccess tetapi ingin menggunakan /etc/apache2/httpd.conf (atau apa pun file master conf server Anda) untuk menyembunyikan file .git directories dan .gitignore, Anda dapat menggunakan yang berikut ini. Saya menemukan jawaban di atas untuk pengaturan master conf tidak menyembunyikan file gitignore.
sumber
www.example.com/.git/config
file di Apache httpd 2.4.27.Jika Anda menggunakan layanan hosting bersama dan tidak memiliki akses ke apache.conf , Anda masih dapat melakukannya di file .htaccess Anda, seperti ini:
sumber
Ini berfungsi
.htaccess
, tidakhttp.conf
diperlukan akses. Masukkan ini sebagai aturan penulisan ulang yang pertama. TambahkanRewrite On
jika diperlukan.Dari sudut keamanan, saya lebih suka 404 palsu daripada 403, lebih informatif bagi penyerang. Komentari salah satu dari keduanya, untuk memastikan, yang lain juga cocok untuk Anda.
Btw, perubahan yang bagus adalah, uji lithmus Anda untuk keduanya adalah:
sumber
RewriteEngine On
sebelum Aturan Rewrite Anda. Tapi bagaimanapun itu tautologis dan berlebihan karena RedirectMatch yang lebih sederhana sudah mencukupi sendiri. Meskipun itu bisa disederhanakan. Pada dasarnya saya merekomendasikan jawaban saya sebagai gantinya. :)Untuk melindungi direktori .git dan juga file lain seperti .gitignore dan .gitmodules menggunakan .htaccess, gunakan:
sumber
Saya selalu menambahkan baris berikut ke template vhost
Hanya untuk memastikan bahwa tidak ada yang dapat mengakses data spesifik VCS. Bekerja dengan sempurna.
sumber
Dengan asumsi server web Anda menggunakan pengguna yang berbeda dari yang Anda gunakan untuk mengakses repositori .git, Anda bisa menonaktifkan bit eksekusi untuk orang lain di direktori .git.
Ini harus bekerja dengan server web lain dan tidak bergantung pada file .htaccess yang memakan waktu.
sumber
Bagi mereka yang hanya ingin menolak semua file "tersembunyi" dan direktori pada distribusi Linux (umumnya semua file dimulai dengan "."), Inilah yang bekerja di Apache 2.4 ketika ditempatkan dalam konteks server conf:
Dan inilah gaya Apache 2.2 yang lebih lama (regex yang sama, hanya arahan auth yang berbeda):
Maka Anda tidak perlu khawatir
.git
atau.svn
secara khusus. Itu juga akan cocok dengan hal-hal seperti.htaccess
dan.htpasswd
secara inheren.Secara pribadi, saya suka menerbitkan 403 untuk permintaan seperti itu, bukan 404, tetapi Anda dapat dengan mudah menggunakan RewriteRule alih-alih penolakan auth, seperti:
sumber
Anda mungkin ingin menolak melayani
.gitignore
juga.File yang dimulai dengan titik tersembunyi di linux.
Oleh karena itu, hanya 404 apa pun yang dimulai dengan titik:
RedirectMatch 404 /\.
sumber
Ini sedikit terlambat tetapi jawaban saya sedikit berbeda jadi saya pikir saya akan menambahkannya. Ini harus masuk dalam file httpd.conf. The
<Files "*">
bersarang di dalam<Directory>
tag akan memblokir semua file dalam direktori.sumber