أقوم بإنشاء موقع جديد Drupal 7.
سيكون التطوير على خادم متاح للجمهور. أنا أعمل في بيئة متعددة المواقع.
أود منع الوصول إلى الموقع لأي شخص وأي شيء عدا المستخدمين المصرح لهم. بما في ذلك الوصول إلى اسم الموقع ، الموضوع ، إلخ ...
لقد استخدمت موقع آمن لمهام مماثلة من قبل. فعلت مصادقة على مستوى http وعادت 403 عندما فشلت المصادقة. ليس لديها نسخة D7.
ما هي أسهل طريقة للقيام بذلك؟
قم بإنشاء وحدة ولصق التعليمات البرمجية التالية في ملف الوحدة الخاصة بك:
<?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;
}
}
إذا كنت تستخدم Drupal 7 فإن الوحدة Shield متاحة لهذا الغرض. فهي تصادق على مستخدم واحد مشترك وكلمة مرور.
درع مصادقة PHP. يقوم بإنشاء درع بسيط للموقع باستخدام مصادقة Apache. يخفي المواقع ، إذا كان المستخدم لا يعرف اسم مستخدم/كلمة مرور بسيطة. تتعامل مع Drupal كـ "حديقة مسورة". هذه الوحدة تساعدك على حماية موقع (dev) الخاص بك بمصادقة HTTP.
أضف 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. الربح.
علق OP أن هذا على الاستضافة المشتركة. توفر معظم الاستضافة المشتركة cPanel أو لوحة تحكم أخرى ، والتي ستعمل على حماية كلمة المرور .htaccess البسيطة للأدلة.
لقد قمت بحماية دليل المستوى الأعلى للموقع قيد التطوير باستخدام هذه الطريقة. إذا كنت تستخدم cPanel لحماية الدليل ، فابحث عن عنصر القائمة "دلائل حماية كلمة المرور".
إذا قمت بحماية دليل المستوى الأعلى قبل تثبيت Drupal ، فسيقوم cPanel بإنشاء ملف htaccess في هذا الدليل. إلحاق محتويات هذا الملف أو إلحاقها مسبقًا بملف htaccess الذي يوفره Drupal. إذا قمت بحماية الدليل بعد تثبيت Drupal ، فأنا متأكد تمامًا من أن cPanel سيضيف فقط الأسطر التي يحتاجها إلى الملفات الموجودة Drupal .htaccess ولا تزعج بقية الملف. فقط تأكد من الاحتفاظ بهذه السطور إذا قمت باستبدال ملف .htaccess أثناء Drupal الترقية.
استخدم مصادقة HTTP. يتم توثيق كيفية عمل ذلك مع Apache على http://httpd.Apache.org/docs/2.2/howto/auth.html . بالنسبة للتثبيت متعدد المواقع ، سيكون القسم <الدليل> من <VirtualHost> مكانًا مناسبًا لوضع توجيهات التكوين.