it-swarm.asia

كيفية تقييد الوصول إلى الموقع أثناء التطوير؟

أقوم بإنشاء موقع جديد Drupal 7.

سيكون التطوير على خادم متاح للجمهور. أنا أعمل في بيئة متعددة المواقع.

أود منع الوصول إلى الموقع لأي شخص وأي شيء عدا المستخدمين المصرح لهم. بما في ذلك الوصول إلى اسم الموقع ، الموضوع ، إلخ ...

لقد استخدمت موقع آمن لمهام مماثلة من قبل. فعلت مصادقة على مستوى http وعادت 403 عندما فشلت المصادقة. ليس لديها نسخة D7.

ما هي أسهل طريقة للقيام بذلك؟

16
daphshez

قم بإنشاء وحدة ولصق التعليمات البرمجية التالية في ملف الوحدة الخاصة بك:

<?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;
}

يستخدم هذا مصادقة HTTP ويتحقق من قاعدة البيانات Drupal لاسم مستخدم وكلمة مرور صالحين.

إذا كان لديك أي مشاكل مع PHP CLI، Drush or cron، يمكنك إضافة الكود التالي في الخطاف:

  // 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 فإن الوحدة Shield متاحة لهذا الغرض. فهي تصادق على مستخدم واحد مشترك وكلمة مرور.

درع مصادقة PHP. يقوم بإنشاء درع بسيط للموقع باستخدام مصادقة Apache. يخفي المواقع ، إذا كان المستخدم لا يعرف اسم مستخدم/كلمة مرور بسيطة. تتعامل مع Drupal كـ "حديقة مسورة". هذه الوحدة تساعدك على حماية موقع (dev) الخاص بك بمصادقة HTTP.

4
Johnathan Elmore

أضف mod_auth لإعداد أباتشي. هذا يختلف باختلاف المضيف الخاص بك (لينكس ، ويندوز). قد يتضمن هذا تنزيل وحدة نمطية ، وقد يتضمن مجرد تعليق خط في httpd.conf

 LoadModule auth_basic_module modules/mod_auth_basic.so

قم بإنشاء ملف .htpasswd ، باستخدام الأمر htpasswd في مجلد ثنائيات Apache

 htpasswd -c user pass

أضف الكود التالي إلى <DIRECTORY> العبارة مباشرةً بعد إعادة كتابة قاعدة عناوين URL النظيفة:

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

أعد تشغيل Apache. الربح.

2
Alex C

علق OP أن هذا على الاستضافة المشتركة. توفر معظم الاستضافة المشتركة cPanel أو لوحة تحكم أخرى ، والتي ستعمل على حماية كلمة المرور .htaccess البسيطة للأدلة.

لقد قمت بحماية دليل المستوى الأعلى للموقع قيد التطوير باستخدام هذه الطريقة. إذا كنت تستخدم cPanel لحماية الدليل ، فابحث عن عنصر القائمة "دلائل حماية كلمة المرور".

إذا قمت بحماية دليل المستوى الأعلى قبل تثبيت Drupal ، فسيقوم cPanel بإنشاء ملف htaccess في هذا الدليل. إلحاق محتويات هذا الملف أو إلحاقها مسبقًا بملف htaccess الذي يوفره Drupal. إذا قمت بحماية الدليل بعد تثبيت Drupal ، فأنا متأكد تمامًا من أن cPanel سيضيف فقط الأسطر التي يحتاجها إلى الملفات الموجودة Drupal .htaccess ولا تزعج بقية الملف. فقط تأكد من الاحتفاظ بهذه السطور إذا قمت باستبدال ملف .htaccess أثناء Drupal الترقية.

0
Dan Halbert

استخدم مصادقة HTTP. يتم توثيق كيفية عمل ذلك مع Apache على http://httpd.Apache.org/docs/2.2/howto/auth.html . بالنسبة للتثبيت متعدد المواقع ، سيكون القسم <الدليل> من <VirtualHost> مكانًا مناسبًا لوضع توجيهات التكوين.

0
Oswald