উন্নয়নের সময় কীভাবে সাইটে অ্যাক্সেস সীমাবদ্ধ করবেন?


17

আমি একটি নতুন দ্রুপাল 7 ভিত্তিক সাইট তৈরি করছি।

বিকাশ এমন সার্ভারে হবে যা সর্বজনীনভাবে অ্যাক্সেসযোগ্য। আমি একাধিক সাইট পরিবেশে কাজ করছি।

অনুমোদনপ্রাপ্ত ব্যবহারকারীদের ব্যতীত যে কেউ এবং যে কোনও কিছুতে আমি সাইটের অ্যাক্সেস পুরোপুরি অবরুদ্ধ করতে চাই। সাইটের নাম, থিম ইত্যাদি অ্যাক্সেস সহ ...

আমি আগে সিকিউর সাইটটি একই ধরণের কাজের জন্য ব্যবহার করেছি । এটি http- স্তরের প্রমাণীকরণ করেছিল এবং প্রমাণীকরণ ব্যর্থ হলে 403 ফেরত দেয়। এটির ডি 7 সংস্করণ নেই।

এটি করার সবচেয়ে সহজ উপায় কী হবে?

উত্তর:


15

আপনার মডিউল ফাইলে একটি মডিউল তৈরি করুন এবং নিম্নলিখিত কোডটি পেস্ট করুন:

<?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 প্রমাণীকরণ ব্যবহার করে এবং একটি বৈধ ব্যবহারকারীর নাম এবং পাসওয়ার্ডের জন্য ড্রুপাল ডেটাবেস পরীক্ষা করে।

পিএইচপি সিএলআই, ড্রশ বা ক্রোন নিয়ে আপনার যদি কোনও সমস্যা হয় তবে আপনি নীচের কোডটি হুকটিতে যুক্ত করতে পারেন:

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

বুদ্ধিমানদের কাছে কথা, এটি আপনার ড্রাশ পরিবেশকে পুরোপুরি স্ক্রু করবে। আপনি যদি কোনও ড্রিশ ওয়ার্কআরাউন্ড তৈরি করেন তবে আমার কাছ থেকে অতিরিক্ত আপত্তি।
লেস্টার পিবডি

সম্পন্ন হয়েছে, আরও বিস্তৃত পদ্ধতির সাথে যুক্ত হয়েছে যাতে পিএইচপি সিএলআই এবং ক্রোন.এফপি অন্তর্ভুক্ত রয়েছে।
বার্ট

1
হট। দ্রুত উত্তর। আমি পারলে আবারও এটির ভোট দিন।
লেস্টার পিবডি

এটি ড্রুপাল 8
ড্রকর্ড

সুতরাং কেন এটি দ্রুপাল as হিসাবে ট্যাগ করা হয়েছে
বার্ট

4

আপনি যদি ড্রুপাল 7 ব্যবহার করছেন তবে শিল্ড মডিউলটি এই উদ্দেশ্যে উপলব্ধ। এটি একটি একক, ভাগ করা ব্যবহারকারী এবং পাসওয়ার্ডকে প্রমাণীকরণ করে।

পিএইচপি প্রমাণীকরণ ieldাল। এটি অ্যাপাচি প্রমাণীকরণের সাথে সাইটের জন্য একটি সহজ ঝাল তৈরি করে। এটি সাইটগুলি লুকিয়ে রাখে, যদি ব্যবহারকারী কোনও সাধারণ ব্যবহারকারীর নাম / পাসওয়ার্ড না জানে। এটি "প্রাচীরযুক্ত বাগান" হিসাবে দ্রুপালকে পরিচালনা করে। এই মডিউলটি আপনাকে HTTP প্রমাণীকরণের মাধ্যমে আপনার (দেব) সাইটটিকে সুরক্ষিত করতে সহায়তা করে।


+1 - চাকা পুনরায় উদ্ভাবন করবেন না। এটি ইতিমধ্যে সম্পন্ন হয়েছে এবং বিভিন্ন সার্ভার কনফিগারেশন এবং ড্রাশের জন্য অ্যাকাউন্ট।
আদম বালসাম

2

যোগ mod_authApache সেটআপ। আপনার হোস্টের উপর নির্ভর করে এটি পরিবর্তিত হয় (লিনাক্স, উইন্ডোজ)। এর মধ্যে মডিউল ডাউনলোড করা জড়িত থাকতে পারে, এটি আপনার httpd.conf- এ কেবল একটি লাইনকে অসন্তুষ্ট করার সাথে জড়িত থাকতে পারে

 LoadModule auth_basic_module modules/mod_auth_basic.so

অ্যাপাচি htpasswdবাইনারি ফোল্ডারে কমান্ডটি ব্যবহার করে একটি .htpasswd ফাইল তৈরি করুন

 htpasswd -c user pass

<DIRECTORY>আপনার পরিষ্কার URL গুলি পুনরায় লেখার নিয়মের ঠিক পরে আপনার বিবৃতিতে নিম্নলিখিত কোডটি যুক্ত করুন :

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

অ্যাপাচি পুনরায় চালু করুন। লাভ।


ধন্যবাদ। আমি এই সমাধানটি টেস্ট করতে পারছি না কারণ আমি এই প্রকল্পটি ভাগ করা হোস্টিংয়ে রয়েছি এবং আমার কাছে httpd.conf অ্যাক্সেস নেই। তবে আমি ভাবছি যদি এটি কোনও একাধিক সাইট পরিবেশে কাজ করতে পারে।
daphshez

আপনার কি .htaccessড্রুপাল রুটে ফাইলটিতে অ্যাক্সেস রয়েছে ? আমি 100% নিশ্চিত নই, তবে আপনি এটি সেখানে রাখার চেষ্টা করতে পারেন। মনে মনে, বার্টের সমাধানটি আরও অনেক ভাল বলে মনে হচ্ছে :)
অ্যালেক্স সি

ড্যান আমার উত্তর দেখুন। আমি .htaccess পরিবর্তন করতে পারি, তবে এটি নিশ্চিত নয় যে এটি কীভাবে আমাকে বহু-সাইট কনফিগারেশনে সহায়তা করে।
daphshez

যদিও এটি ভাল সমাধান তবে আপনি এটির সাথে সামাজিক ভাগ করে নেওয়ার বৈশিষ্ট্যগুলি পরীক্ষা করতে পারবেন না।
সুখজিন্দর সিং

0

HTTP প্রমাণীকরণ ব্যবহার করুন। অ্যাপাচি দিয়ে এটি কীভাবে করা হয় তা http://httpd.apache.org/docs/2.2/howto/auth.html এ নথিভুক্ত করা হয়েছে । একটি মাল্টিসাইট ইনস্টল করার জন্য, <ভার্চুয়ালহস্ট> এর <ডিরেক্টরি> বিভাগটি কনফিগারেশনের নির্দেশাবলী রাখার জন্য উপযুক্ত জায়গা হবে।


0

ওপি মন্তব্য করেছে যে এটি শেয়ার্ড হোস্টিংয়ের ক্ষেত্রে। সর্বাধিক ভাগ করা হোস্টিং সিপ্যানেল বা অন্য কোনও নিয়ন্ত্রণ প্যানেল সরবরাহ করে, যা ডিরেক্টরিগুলির জন্য সহজ .htaccess পাসওয়ার্ড সুরক্ষা করবে do

আমি এই পদ্ধতিটি ব্যবহার করে বিকাশের অধীনে কোনও সাইটের শীর্ষ স্তরের ডিরেক্টরি সুরক্ষিত করেছি। আপনি যদি ডিরেক্টরিটি সুরক্ষিত করতে সিপ্যানেল ব্যবহার করেন তবে "পাসওয়ার্ড সুরক্ষা ডিরেক্টরিগুলি" মেনু আইটেমটি সন্ধান করুন।

আপনি ড্রুপাল ইনস্টল করার আগে আপনি যদি শীর্ষ-স্তরের ডিরেক্টরিটি সুরক্ষা করেন তবে সিপ্যানেল সেই ডিরেক্টরিতে একটি .htaccess ফাইল তৈরি করবে। ড্রপাল সরবরাহ করে এমন .htaccess ফাইলের সাথে সেই ফাইলটির বিষয়বস্তু সংযোজন বা সংশোধন করুন। আপনি যদি দ্রুপাল ইনস্টল করার পরে ডিরেক্টরিটি সুরক্ষিত করেন তবে আমি নিশ্চিত যে সিপানেল বিদ্যমান ড্রুপাল .htaccess ফাইলটিতে এটির প্রয়োজনীয় লাইনগুলি যুক্ত করবে এবং বাকী ফাইলটি বিরক্ত করবে না। একটি দ্রুপাল আপগ্রেড করার সময় আপনি যদি .htaccess ফাইলটি প্রতিস্থাপন করেন তবে কেবল সেই লাইনগুলি সংরক্ষণ করেছেন তা নিশ্চিত করুন।


ধন্যবাদ, আমার আসলে শেল অ্যাক্সেসও আছে। যখন আমি মাল্টি-সাইট কনফিগারেশনে কেবল একটি সাইট রক্ষা করতে চাই তবে আমি কি এইচটিএকসেস (বা এই বিষয়টির জন্য httpd.conf) ব্যবহার করতে পারি?
daphshez

দুঃখিত, আমি ওপি-তে বহু-সাইট মন্তব্য মিস করেছি। আমি মাল্টি-সাইট ব্যবহার করি না, তবে এটি কীভাবে কাজ করে তা আমি সন্ধান করেছি। যেহেতু দ্রুপাল মাল্টি সাইট এখানকার সমাধানগুলির মধ্যে একটি একক শীর্ষ স্তরের দির ব্যবহার করে, আমি মনে করি কেবল বার্টেরই কাজ করবে। অ্যাডমিন ছাড়া সবাইকে লক আউট করার জন্য আপনি রক্ষণাবেক্ষণ মোডে ডেভ সাইটটি চালাতে পারেন। কিছু ইঙ্গিত জন্য এখানে দেখুন ।
ড্যান হালবার্ট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.