Kami adalah organisasi pengembangan web dan baru-baru ini pindah ke menggunakan subversi untuk sistem kontrol versi kami. Karena mengeksekusi pembaruan jauh lebih cepat daripada melakukan ekspor dan menyalin file, pengembang ingin agar server produksi menjadi copy yang berfungsi.
Satu-satunya masalah yang saya miliki dengan ini adalah semua file .svn yang berserakan di seluruh sistem, dan fakta bahwa beberapa orang yang perusahan dapat, berpotensi, membaca isi file di sana, mungkin memberi mereka informasi yang kami inginkan mereka lebih suka mereka tidak memiliki .
Apa cara terbaik / termudah untuk mencegah IIS menyajikan konten apa pun dari dalam direktori .svn itu?
Jawaban:
"Jangan lakukan itu" tidak menjawab pertanyaan.
Praktis, saya suka memiliki copy pekerjaan di server produksi, karena dengan cara itu saya dapat membuat perubahan cepat dalam produksi (siapa yang belum pernah melakukan itu?) Dan memeriksanya kembali. Itu tergantung di mana Anda ingin slider keamanan / kenyamanan Anda, dan dalam banyak kasus ini adalah tempat yang bagus.
Solusi standar di Apacheland adalah meninggalkan file .svn di sana tetapi memberi tahu server web untuk tidak pernah melayani mereka. Berikut ini cara melakukannya dengan IIS 5-7 di Windows 2000-2008.
Unduh dan pasang ISAPI_Rewrite - versi Lite akan cukup untuk tujuan ini. Perhatikan persyaratan sistem tambahan untuk Win 2008. Peringatan - penginstal MSI berhenti dan memulai IIS.
Hapus centang pada kotak "read only" pada properti file httpd.ini . Jika Anda menggunakan penginstal MSI, ada pintasan ke file httpd.ini di menu Start di bawah Helicon-> ISAPI_Rewrite
Tambahkan baris ini ke httpd.ini :
Arahan ISAPI_Rewrite di httpd.ini :
Sekarang, setiap permintaan untuk direktori .svn atau isinya akan menghasilkan 404 Tidak Ditemukan dari server.
sumber
Anda dapat memastikan bahwa akun pengguna apa pun yang digunakan oleh IIS tidak memiliki hak untuk mengakses direktori .svn.
Anda dapat melakukan ini secara manual (tidak disarankan) atau menggunakan sesuatu seperti skrip penghapusan MrJangles yang dipicu untuk dijalankan setelah Anda melakukan pembaruan SVN atau menjalankan secara teratur sebagai tugas terjadwal:
(catatan: Saya belum menguji yang di atas, Anda harus memeriksa apakah melakukan apa yang dicoba sebelum mengandalkannya dalam produksi, lihat output "icacls / help" untuk info lebih lanjut)
(catatan lain: "icacls" adalah perintah Vista / 2008, pada varian Windows sebelumnya perintahnya adalah "cacls" sebagai gantinya)
sumber
Menggunakan IIS 7, buka IIS Manager, pilih node server, klik dua kali fitur Handler Mappings . Klik tindakan Tambahkan Managed Handler dan konfigurasikan handler sebagai berikut:
Sekarang setiap permintaan untuk file dalam folder metadata Subversi bernama .svn di situs alle harus mengembalikan ini:
Anda dapat memilih jenis penangan yang berbeda jika diinginkan, mungkin penangan FileNotFound yang akan mengembalikan kode status 404.
Untuk IIS 6 (dengan ASP.NET 2 diinstal dan dikonfigurasi):
Buka direktori Home> Konfigurasi> Pemetaan dan petakan
.svn-base
ekstensi ke%SystemRoot%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll
. Kemudian di machine.config (yang dapat Anda temukan di%SystemRoot%\Microsoft.NET\Framework\v2.0.50727\CONFIG
) Anda dapat menambahkan handler yang sama seperti di atas untuk ekstensi, tambahkan elemen XML berikut sebagai anak-<httpHandlers>
elemen:Ini hanya akan mencegah pengunjung dari meminta file kode sumber, mereka masih bisa meminta file lain dari folder .svn. Petakan lebih banyak ekstensi ke aspnet_isapi.dll atau buat pemetaan wildcard (akan memengaruhi kinerja) dan Anda dapat memblokir lebih banyak file dari yang diminta.
sumber
Dari sudut pandang keamanan murni, saya akan mendidik kembali pengembang Anda.
Kemudahan penempatan belum tentu merupakan ide bagus jika Anda mengorbankan keamanan.
Anda sedang merencanakan konfigurasi untuk memblokir akses ke informasi sensitif. Apa yang terjadi jika konfigurasi tidak sengaja berubah. Apa yang terjadi jika IIS hotFix turun dan mengubah cara kerja konfigurasi Anda. Apa yang terjadi jika pustaka pihak ke-3 yang Anda gunakan kesalahan dan berhenti berfungsi. Saya dapat memikirkan beberapa peristiwa yang sangat mungkin yang akan merusak konfigurasi Anda dan memungkinkan akses ke file-file ini, yang akan BENAR - BENAR MITIGASI dengan tidak memiliki file di server di tempat pertama.
Anda harus membuat skrip penerapan yang menyalin file yang sesuai dari server pementasan. Anda bahkan dapat melakukan stage melalui SVN ke direktori lain di Prod.
Untuk menggunakan, Anda dapat menggunakan RoboCopy dan perintah / XD untuk mengecualikan direktori .svn. Anda dapat menggunakan alat penyebaran web Microsoft dan membatasi direktori dengan itu. Anda dapat menggunakan dan menjalankan di atas
for /r YOURPATH %f in (.svn) do rd /s /q "%f"
jika perlu juga.Hanya saja, jangan menyebarkan direktori ini ke situs web produksi.
sumber
Jangan gunakan subversi. Serius.
Dari komentar Anda, tampak bahwa Anda menggunakan alat yang salah untuk pekerjaan itu. Subversion adalah alat yang hebat untuk pengembang Anda, tetapi itu bukan alat penyebaran / mirroring. Jika tujuan Anda hanya menyalin file dari server staging / test Anda ke server produksi Anda dengan bandwidth dan waktu minimum, maka saya sarankan Anda menggunakan rsync . Sekarang, karena saya seorang admin Unix, mungkin ada beberapa Windows yang setara dengan rsync yang tidak saya ketahui, jadi Anda mungkin ingin melakukan riset. Namun, Anda dapat menggunakan rsync di bawah Cygwin atau cwrsync .
Rsync memungkinkan Anda untuk merefleksikan direktori pada satu server dengan direktori yang lain. Ini menghitung delta antara dua server dan hanya menyalin perbedaannya. Tidak hanya itu, tetapi juga menekan delta dan, secara opsional, dapat mengenkripsi juga.
sumber
Praktik terbaik adalah sistem penyebaran otomatis yang mengekspor dan menerbitkan setelah pembaruan SVN dibuat. Pertimbangkan Hudson misalnya. Ada beberapa lagi, tetapi karena kita tidak memerlukannya, saya tidak mendapat informasi dengan baik
Greetz, GHad
sumber
Saya menjadwalkan skrip di server produksi saya yang mencari .svn dan hanya menghapus file. Saya tidak berpikir ini akan berhasil dalam kasus Anda.
Jika menghapus file bukan opsi, Anda dapat menempatkan keamanan dasar pada direktori melalui IIS (kata sandi, atau batasan IP). Ini akan menghentikan IIS dari melayani konten untuk pengguna yang tidak sah.
Semoga berhasil!
sumber