web-gelistirme-sc.com

Geliştirme sırasında siteye erişim nasıl kısıtlanır?

Yeni bir Drupal 7 tabanlı bir site oluşturuyorum.

Geliştirme, herkesin erişebileceği bir sunucuda olacaktır. Çok sahalı bir ortamda çalışıyorum.

Siteye erişimi yetkili kullanıcılar dışında herhangi bir şeye tamamen engellemek istiyorum. Site adına erişim, tema vb. Dahil ...

Daha önce benzer görevler için Güvenli Site kullandım. Http düzeyinde kimlik doğrulama yaptı ve kimlik doğrulama başarısız olduğunda 403 döndürdü. D7 sürümü yok.

Bunu yapmanın en kolay yolu ne olurdu?

16
daphshez

Bir modül yapın ve aşağıdaki kodu modül dosyanıza yapıştırın:

<?php

/**
 * Implementation of hook_boot().
 *
 * Ask for user credentials and try to authenticate.
 */
function foo_boot() {
  require_once DRUPAL_ROOT . '/includes/password.inc';

  if (isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW'])) {
    $query = "SELECT pass FROM {users} WHERE name = :name";
    $result = db_query($query, array(':name' => $_SERVER['PHP_AUTH_USER']));
    $account = new stdClass();
    foreach ($result as $row) {
      $account->pass = $row->pass;
    }
    if (isset($account->pass)) {
      if (user_check_password($_SERVER['PHP_AUTH_PW'], $account)) {
        return;
      }
    }
  }

  header('WWW-Authenticate: Basic realm="Development"');
  header('HTTP/1.0 401 Unauthorized');
  exit;
}

Bu HTTP Kimlik Doğrulaması kullanır ve Drupal Veritabanını geçerli bir kullanıcı adı ve şifre için kontrol eder.

PHP CLI, Drush veya cron ile ilgili herhangi bir sorun yaşarsanız, kancaya aşağıdaki kodu ekleyebilirsiniz:

  // Allow cron through
  if (basename($_SERVER['PHP_SELF']) == 'cron.php') {
    return;
  }  

  // Allow PHP CLI/Drush through
  if (isset($_SERVER['argc'])) {
    if (php_sapi_name() == 'cli' || (is_numeric($_SERVER['argc']) && $_SERVER['argc'] > 0)) {
      return;
    }
  }
15
Bart

Drupal 7 kullanıyorsanız Shield modülü bu amaçla kullanılabilir.Tek, paylaşılan bir kullanıcı ve parolanın kimliğini doğrular.

PHP Kimlik Doğrulama kalkanı. Apache kimlik doğrulaması ile site için basit bir kalkan oluşturur. Kullanıcı basit bir kullanıcı adı/şifre bilmiyorsa siteleri gizler. Drupal "duvarlı bahçe" olarak iş görür. Bu modül, (dev) sitenizi HTTP kimlik doğrulaması ile korumanıza yardımcı olur.

4
Johnathan Elmore

Ekle mod_auth Apache kurulumuna. Bu, Ana Makinenize (linux, windows) bağlı olarak değişir. Bu bir modülün indirilmesini içerebilir, httpd.conf dosyasında sadece bir satırın açılmasını içerebilir

 LoadModule auth_basic_module modules/mod_auth_basic.so

Apache ikili klasöründeki htpasswd komutunu kullanarak bir .htpasswd dosyası oluşturun

 htpasswd -c user pass

Aşağıdaki kodu <DIRECTORY> URL'lerinizi yeniden yazma kuralınızdan hemen sonra ifade:

AuthType Basic
AuthName "My Auth"
AuthUserFile \path\to\.htpasswd
Require valid-user

Apache'yi yeniden başlatın. Kar.

2
Alex C

OP bu paylaşılan barındırma olduğunu yorumladı. Çoğu paylaşılan barındırma, dizinler için basit .htaccess parola koruması yapacak cPanel veya başka bir kontrol paneli sağlar.

Bu yöntemi kullanarak geliştirilmekte olan bir sitenin üst düzey dizinini korudum. Dizini korumak için cPanel kullanıyorsanız, "Parola Koruma Dizinleri" menü öğesini bulun.

Drupal'ı yüklemeden önce üst düzey dizini korursanız, cPanel bu dizinde bir .htaccess dosyası oluşturur. Bu dosyanın içeriğini Drupal sağlayan .htaccess dosyası ile ekleyin veya ekleyin. Drupal'ı yükledikten sonra dizini korursanız, cPanel'in yalnızca gereken satırları varolan satırlara ekleyeceğinden eminim. Drupal .htaccess dosyası ve dosyanın geri kalanını rahatsız etmeyin. Drupal yükseltme sırasında .htaccess dosyasını değiştirirseniz bu satırları koruduğunuzdan emin olun.

0
Dan Halbert

HTTP kimlik doğrulamasını kullanın. Apache ile bunun nasıl yapıldığı http://httpd.Apache.org/docs/2.2/howto/auth.html adresinde belgelenmiştir. Çok bölgeli bir kurulum için <VirtualHost> öğesinin <Directory> bölümü yapılandırma yönergelerini koymak için uygun bir yer olacaktır.

0
Oswald