it-swarm-vi.com

Làm thế nào để hạn chế quyền truy cập vào trang web trong quá trình phát triển?

Tôi đang tạo một trang web mới Drupal 7.

Sự phát triển sẽ là trên một máy chủ có thể truy cập công khai. Tôi đang làm việc trong một môi trường nhiều trang web.

Tôi muốn chặn hoàn toàn quyền truy cập vào trang web cho bất kỳ ai & bất cứ ai trừ người dùng được ủy quyền. Bao gồm quyền truy cập vào tên trang web, chủ đề, v.v ...

Tôi đã sử dụng Trang web bảo mật cho các tác vụ tương tự trước đây. Nó đã xác thực cấp http và trả về 403 khi xác thực thất bại. Nó không có phiên bản D7.

Điều gì sẽ là cách dễ nhất để làm điều này?

16
daphshez

Tạo một mô-đun và dán mã sau vào tệp mô-đun của bạ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;
}

Điều này sử dụng Xác thực HTTP và kiểm tra Drupal Cơ sở dữ liệu để biết tên người dùng và mật khẩu hợp lệ.

Nếu bạn có bất kỳ vấn đề nào với PHP CLI, Drush hoặc cron, bạn có thể thêm mã sau vào hook:

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

Nếu bạn đang sử dụng Drupal 7 mô-đun Shield có sẵn cho mục đích này. Nó xác thực một người dùng, mật khẩu và người dùng chung.

Lá chắn xác thực PHP. Nó tạo ra một lá chắn đơn giản cho trang web với xác thực Apache. Nó ẩn các trang web, nếu người dùng không biết tên người dùng/mật khẩu đơn giản. Nó xử lý Drupal như một "khu vườn có tường". Mô-đun này giúp bạn bảo vệ trang web (dev) của mình bằng xác thực HTTP.

4
Johnathan Elmore

Thêm mod_auth Vào thiết lập Apache. Điều này thay đổi tùy thuộc vào Máy chủ của bạn (linux, windows). Điều này có thể liên quan đến việc tải xuống một mô-đun, nó có thể liên quan đến việc bỏ ghi chú một dòng trong httpd.conf của bạn

 LoadModule auth_basic_module modules/mod_auth_basic.so

Tạo tệp .htpasswd, sử dụng lệnh htpasswd trong thư mục nhị phân Apache

 htpasswd -c user pass

Thêm mã sau vào câu lệnh <DIRECTORY> Ngay sau quy tắc viết lại URL sạch của bạn:

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

Khởi động lại Apache. Lợi nhuận.

2
Alex C

OP đã nhận xét rằng đây là trên chia sẻ lưu trữ. Hầu hết các lưu trữ được chia sẻ cung cấp cPanel hoặc một số bảng điều khiển khác, sẽ thực hiện bảo vệ mật khẩu .htaccess đơn giản cho các thư mục.

Tôi đã bảo vệ thư mục cấp cao nhất của một trang web đang được phát triển bằng phương pháp này. Nếu bạn sử dụng cPanel để bảo vệ thư mục, hãy tìm mục menu "Mật khẩu bảo vệ mật khẩu".

Nếu bạn bảo vệ thư mục cấp cao nhất trước khi cài đặt Drupal, cPanel sẽ tạo tệp .htaccess trong thư mục đó. Nối hoặc thêm nội dung của tệp đó với tệp .htaccess mà Drupal cung cấp. Nếu bạn bảo vệ thư mục sau khi cài đặt Drupal, tôi khá chắc chắn cPanel sẽ chỉ thêm các dòng cần thiết vào hiện tại Drupal .htaccess và không làm phiền phần còn lại của tệp. Chỉ cần đảm bảo bạn bảo toàn các dòng đó nếu bạn thay thế tệp .htaccess trong quá trình nâng cấp Drupal.

0
Dan Halbert

Sử dụng xác thực HTTP. Làm thế nào điều này được thực hiện với Apache được ghi lại tại http://httpd.Apache.org/docs/2.2/howto/auth.html . Đối với cài đặt nhiều trang, phần <Directory> của <Virtualhost> sẽ là nơi thích hợp để đặt các chỉ thị cấu hình.

0
Oswald