Saya mencoba mencari cara terbaik untuk mengatur lingkungan pementasan dengan beberapa batasan akses.
Solusi sederhananya adalah dengan memunculkan Otentikasi Dasar, tetapi kemudian saya tidak akan dapat mengarahkan Google Page Speed Insight padanya sambil menguji optimasi kinerja, serta layanan eksternal serupa lainnya yang ingin saya akses.
Dapat menjadikannya sepenuhnya publik dengan robots.txt untuk mencegahnya muncul di mesin pencari. Tapi kekhawatiran saya ada risiko kesalahan pada robots.txt cukup tinggi, dan saya lebih suka tidak perlu khawatir tentang itu.
Jika Anda tidak memblokir mesin pencari (atau jika beberapa mengabaikannya), maka Anda akan mendapatkan pelanggan langsung melakukan pemesanan ke situs pementasan Anda, yang tidak akan membuat mereka bahagia.
Atau bahkan lebih buruk, jika Anda secara tidak sengaja menggunakan robots.txt untuk produksi, Anda akan kehilangan semua jus Google Anda dan sebagian besar penjualan.
Jadi opsi yang saya sukai adalah pembatasan alamat IP sederhana. Tetapi saya ingin dapat menambah / menghapus pembatasan tanpa harus memulai ulang Nginx, hanya untuk meminimalkan risiko saat membuat perubahan.
Jadi saya mulai condong ke modul cepat yang, ketika diaktifkan, akan melihat alamat IP pengembang dan hanya mengizinkan akses ke situs (depan dan belakang) jika alamat IP pengguna (atau X_FORWARDED_FOR) cocok dengan itu.
Ingin tahu apakah ini terdengar seperti solusi yang masuk akal atau jika ada sesuatu yang lebih sederhana yang saya lewatkan.
UPDATE: Mengingat bahwa robots.txt dapat dikontrol melalui saklar backend asli dan pemberitahuan toko demo akan mencegah pesanan pelanggan yang sah, dan karena saya benar-benar tidak peduli tentang akses publik ke situs pementasan, saya suka solusi Phil.
Tetapi bagi siapa pun yang ingin membatasi akses ke situs pementasan mereka, saya pikir solusi Kris adalah cara untuk pergi.
UPDATE 2: Tidak 100% yakin apa yang seharusnya dilakukan opsi robots.txt di System Config> Design> HTML Head, tetapi dalam kasus saya - dan dari pencarian singkat ini tampaknya umum - saya hanya punya robots.txt datar file teks di tempat yang sedang digunakan, sehingga opsi konfigurasi tidak dihormati.
Jadi saya akan menggunakan modul perawatan untuk saat ini: https://github.com/aleron75/Webgriffe_Maintenance
Sarana utama kami untuk mengunci (sebagian besar) lingkungan pementasan adalah otentikasi BASIC. Tetapi kami juga memiliki langkah-langkah pencegahan untuk mencegah mereka ditemukan oleh mesin, menghalangi tautan yang muncul di situs web publik (ini tidak pernah terjadi), dan juga untuk mencegah mereka diindeks oleh Google.
Saya telah menyiapkan aturan
/etc/httpd/conf.d/robots.conf
dengan alias berikut:Alias merutekan semua permintaan ke lokasi robots.txt ke file yang dikunci. Ini berarti tidak masalah apa yang ada di file robots.txt di root staging Magento, server akan selalu menyajikan aturan berikut:
Lokasi dan memenuhi semua memungkinkan file robots.txt untuk dilayani oleh siapa pun terlepas dari otentikasi karena kami tidak memiliki
disallow from any
aturan global .Untuk otentikasi kata sandi, saya telah menyiapkan aturan sehingga saya dapat membuka otentikasi pada satu situs sementara dengan menambahkan
Satisfy any
ke.htaccess
file. Ini karena kami menjalankan beberapa situs panggung pada server pementasan internal khusus yang sama. Ini juga akan memungkinkan pengaturanallow from
aturan bersama denganSatisfy any
untuk menghapus otentikasi kata sandi ke alamat IP tertentu sambil mempertahankannya untuk orang lain (jika saya benar-benar perlu).Alasan saya tidak suka daftar putih berbasis IP di seluruh papan (yaitu tanpa otentikasi berbasis kata sandi) adalah karena alamat IP klien tidak selalu statis. Yang berarti kita kemudian harus memperbarui IP mereka untuk mendapatkan mereka mengakses (berpotensi) setiap hari atau setiap minggu tergantung pada berapa lama ISP mereka DHCP memegang sewa.
Untuk DNS, kami menggunakan wildcard DNS sehingga perayap DNS tidak akan mengambil semua nama host situs panggung yang perlu memiliki DNS publik. Google sebenarnya akan mengambil situs dari catatan DNS. Ini mencegah hal itu, artinya satu-satunya cara bagi mereka untuk menemukannya adalah jika seseorang meninggalkan tautan di suatu tempat. Tetapi dengan memaksa file robot untuk melayani aturan larangan akan menghentikan mereka mengindeksnya jika mereka menemukan tautan.
Jika saya di tempat pedagang menjalankan situs panggung untuk situs web perusahaan, saya akan melakukan hal-hal sedikit berbeda dan hanya akan langsung memblokir semua lalu lintas yang datang ke kotak panggung kecuali itu diketahui alamat IP. Siapa pun yang bekerja di situs ini dari jarak jauh (in-house) akan diminta untuk terhubung ke VPN perusahaan untuk mengakses jika mereka tidak memiliki IP statis yang dapat saya daftar putih.
Memiliki DNS publik adalah suatu keharusan jika Anda perlu menguji hal-hal seperti integrasi prosesor pembayaran, yang, tidak seperti kebanyakan gateway, harus membuat panggilan balik ke server untuk melalui proses pembayaran.
sumber
Saya telah mengembangkan modul untuk mengaktifkan mode pemeliharaan yang dapat digunakan dengan efek yang sama dengan memblokir pengguna mengakses fronted (bukan admin yang dapat dibatasi dengan fitur IP blocking asli Magento).
Anda dapat membuat beberapa IP mengakses frontend bahkan dengan mode pemeliharaan yang diaktifkan.
Mungkin Anda bisa mencobanya, berharap itu bisa membantu. Ini gratis dan open source: https://github.com/aleron75/Webgriffe_Maintenance
sumber
REMOTE_ADDR
tersedia tetapi tidak menjadi alamat yang benar, jadi saya pikir mungkin lebih baik untuk membandingkan terhadap salah satuREMOTE_ADDR
atauX_FORWARDED_FOR
. Bekerja dengan baik dalam pementasan jadi saya tidak terlalu khawatir menggali sendiri secara pribadi dulu.Ada beberapa cara berbeda untuk melakukan ini.
Salah satu caranya adalah membuat pengembang Anda mengedit file / host mereka dengan alamat IP yang benar.
Ada ekstensi di luar sana yang mengklaim melakukan ini dengan cara yang lebih elegan: http://www.magentocommerce.com/magento-connect/et-ip-security.html
sumber
Karena Anda bertanya tentang Varnish di komentar, saya akan membagikan konfigurasi saya dengan HTTP Basic Authentication menggunakan Varnish, termasuk pengecualian. Anda harus mengaturnya di VCL, jika halaman yang di-cache akan selalu dapat diakses.
Pernis konfigurasi VCL
Saya ingin mengizinkan alamat dan rentang IP tertentu untuk panggilan balik penyedia pembayaran dan semacamnya, yang saya definisikan sebagai ACL di bagian atas file VCL:
Kemudian tambahkan berikut ini di akhir
vcl_recv
, tepat sebelumreturn (lookup)
:payment
adalah ACL yang didefinisikan di atas. Saya juga mengizinkan akses ke rute unggah karena pengunggah Flash tidak mengirim tajuk otentikasi dan dengan demikian gagal di belakang HTTP Basic Auth. Ganti ADMIN dengan URL admin Anda yang sebenarnya. Anda dapat menambahkan pengecualian lain dengan cara ini.XXXXXXXXX adalah nama pengguna dan kata sandi yang disandikan base64. Jalankan berikut ini di shell untuk menghasilkan string ini:
Kemudian tambahkan ini di akhir VCL untuk menentukan respons kesalahan 401:
sumber