Xác thực cơ bản PHP không hoạt động

Trong nhiều trường hợp, thành phần Yêu cầu đăng nhập của Altis đủ để chặn truy cập vào các trang web. Tuy nhiên, đôi khi, bạn nên thử nghiệm các yếu tố (đặc biệt là trên môi trường phát triển) với tư cách là người dùng đã đăng xuất. Trong những trường hợp này, mô-đun Yêu cầu đăng nhập không giải quyết được sự cố và cần có một phương pháp chặn truy cập khác. Đó là nơi PHP Basic Auth xuất hiện

PHP Basic Auth cho phép nhóm kỹ thuật hạn chế quyền truy cập vào một trang web bằng cách sử dụng xác thực PHP cơ bản. Trong lần tải đầu tiên, trang web sẽ yêu cầu tên người dùng và mật khẩu;

Ghi chú. Tên người dùng và mật khẩu xác thực phải được xác định hoặc xác thực cơ bản sẽ không hoạt động

Cấu hình

Theo mặc định, PHP Basic Auth bị tắt. Để kích hoạt nó, một giá trị phải được chuyển đến security.php-basic-auth, hoặc là true hoặc một mảng bao gồm tên người dùng và mật khẩu

Thiết lập được đề xuất là xác định mọi thứ trong tệp composer.json của bạn, bao gồm tên người dùng và mật khẩu. Cấu hình tương tự ở bên dưới, ví dụ thiết lập thủ công có thể được xử lý trong tệp Trình soạn thảo như thế này

{
	"extra": {
		"altis": {
			"modules": {
				"security": {
					"php-basic-auth": {
						"username": "altisusername",
						"password": "altispassword"
					}
				}
			}
		}
	}
}

Ghi chú. Bạn phải chỉ định tên người dùng và mật khẩu trong cấu hình này, ngay cả khi bạn đang sử dụng lại cùng một tên người dùng và mật khẩu trong các môi trường khác nhau

Thủ công

Thiết lập thủ công liên quan đến cấu hình đơn giản hơn trong composer.json của bạn nhưng là một bước bổ sung trong cấu hình của bạn. Tệp Trình soạn thảo của bạn sẽ trông như thế này

{
	"extra": {
		"altis": {
			"modules": {
				"security": {
					"php-basic-auth": true
				}
			}
		}
	}
}

Điều này bật thành phần Xác thực cơ bản PHP, nhưng không xác định tên người dùng và mật khẩu. Không có tên người dùng và mật khẩu, xác thực cơ bản sẽ không được yêu cầu. Để chỉ định tên người dùng và mật khẩu trong cấu hình này, bạn phải thêm chúng dưới dạng hằng số PHP vào một tệp trong thư mục .config/ (e. g. .config/load.php hoặc một tệp theo yêu cầu của .config/load.php). Ví dụ sau đây được đề xuất

if ( in_array( \Altis\get_environment_type(), [ 'staging', 'development' ] ) {
	define( 'HM_BASIC_AUTH_USER', 'altisusername' );
	define( 'HM_BASIC_AUTH_PW', 'altispassword' );
}

ghi đè

Theo mặc định, PHP Basic Auth sẽ hoạt động trên môi trường phát triển và dàn dựng nhưng không hoạt động trên môi trường sản xuất hoặc cục bộ. Các giá trị mặc định này cũng có thể được ghi đè trong tệp composer.json hoặc có thể xác định các kết hợp tên người dùng/mật khẩu dành riêng cho môi trường

Kiểm soát truy cập bằng cách sử dụng xác thực HTTP Basic và tùy chọn kết hợp với kiểm soát truy cập dựa trên địa chỉ IP

Giới thiệu

Bạn có thể hạn chế quyền truy cập vào trang web của mình hoặc một số phần của trang web bằng cách triển khai xác thực tên người dùng/mật khẩu. Tên người dùng và mật khẩu được lấy từ một tệp được tạo và điền bởi công cụ tạo tệp mật khẩu, ví dụ: apache2-utils

Xác thực HTTP Basic cũng có thể được kết hợp với các phương pháp hạn chế truy cập khác, ví dụ như hạn chế truy cập theo địa chỉ IP hoặc vị trí địa lý

điều kiện tiên quyết

  • NGINX Plus hoặc NGINX Nguồn mở
  • Tiện ích tạo tệp mật khẩu như apache2-utils (Debian, Ubuntu) hoặc
    $ sudo htpasswd /etc/apache2/.htpasswd user2
    
    1 (RHEL/CentOS/Oracle Linux)

Tạo một tập tin mật khẩu

Để tạo các cặp tên người dùng-mật khẩu, hãy sử dụng tiện ích tạo tệp mật khẩu, ví dụ: apache2-utils hoặc

$ sudo htpasswd /etc/apache2/.htpasswd user2
1

  1. Xác minh rằng apache2-utils (Debian, Ubuntu) hoặc

    $ sudo htpasswd /etc/apache2/.htpasswd user2
    
    1 (RHEL/CentOS/Oracle Linux) đã được cài đặt

  2. Tạo tệp mật khẩu và người dùng đầu tiên. Chạy tiện ích

    $ sudo htpasswd /etc/apache2/.htpasswd user2
    
    6 với cờ
    $ sudo htpasswd /etc/apache2/.htpasswd user2
    
    7 (để tạo tệp mới), tên đường dẫn tệp làm đối số đầu tiên và tên người dùng làm đối số thứ hai

    ________số 8_______

    Nhấn Enter và nhập mật khẩu cho user1 theo lời nhắc

  3. Tạo các cặp mật khẩu người dùng bổ sung. Bỏ qua cờ

    $ sudo htpasswd /etc/apache2/.htpasswd user2
    
    7 vì tệp đã tồn tại

    $ sudo htpasswd /etc/apache2/.htpasswd user2
    

  4. Bạn có thể xác nhận rằng tệp chứa tên người dùng được ghép nối và mật khẩu được băm

    $ cat /etc/apache2/.htpasswd
    user1:$apr1$/woC1jnP$KAh0SsVn5qeSMjTtn0E9Q0
    user2:$apr1$QdR8fNLT$vbCEEzDj7LyqCMyNpSoBh/
    user3:$apr1$Mr5A0e.U$0j39Hp5FfxRkneklXaMrr/
    

Cấu hình NGINX và NGINX Plus cho HTTP Basic Authentication

  1. Bên trong một vị trí mà bạn sẽ bảo vệ, chỉ định lệnh và đặt tên cho khu vực được bảo vệ bằng mật khẩu. Tên của khu vực sẽ được hiển thị trong cửa sổ hộp thoại tên người dùng/mật khẩu khi yêu cầu thông tin xác thực

    location /api {
        auth_basic "Administrator’s Area";
        #...
    }
    

  2. Chỉ định lệnh với một đường dẫn đến. htpasswd chứa cặp người dùng/mật khẩu

    location /api {
        auth_basic           "Administrator’s Area";
        auth_basic_user_file /etc/apache2/.htpasswd; 
    }
    

Ngoài ra, bạn có thể giới hạn quyền truy cập vào toàn bộ trang web bằng xác thực cơ bản nhưng vẫn công khai một số khu vực trang web. Trong trường hợp này, hãy chỉ định tham số

$ sudo htpasswd /etc/apache2/.htpasswd user2
9 của lệnh hủy bỏ kế thừa từ các mức cấu hình cao hơn

server {
    ...
    auth_basic           "Administrator’s Area";
    auth_basic_user_file conf/htpasswd;

    location /public/ {
        auth_basic off;
    }
}

Xác thực cơ bản HTTP có thể được kết hợp hiệu quả với hạn chế truy cập theo địa chỉ IP. Bạn có thể thực hiện ít nhất hai kịch bản

  • người dùng phải được xác thực và có địa chỉ IP hợp lệ
  • người dùng phải được xác thực hoặc có địa chỉ IP hợp lệ
  1. Cho phép hoặc từ chối quyền truy cập từ các địa chỉ IP cụ thể bằng lệnh và

    location /api {
        #...
        deny  192.168.1.2;
        allow 192.168.1.1/24;
        allow 127.0.0.1;
        deny  all;
    }
    

    Quyền truy cập sẽ chỉ được cấp cho mạng

    $ cat /etc/apache2/.htpasswd
    user1:$apr1$/woC1jnP$KAh0SsVn5qeSMjTtn0E9Q0
    user2:$apr1$QdR8fNLT$vbCEEzDj7LyqCMyNpSoBh/
    user3:$apr1$Mr5A0e.U$0j39Hp5FfxRkneklXaMrr/
    
    0 ngoại trừ địa chỉ
    $ cat /etc/apache2/.htpasswd
    user1:$apr1$/woC1jnP$KAh0SsVn5qeSMjTtn0E9Q0
    user2:$apr1$QdR8fNLT$vbCEEzDj7LyqCMyNpSoBh/
    user3:$apr1$Mr5A0e.U$0j39Hp5FfxRkneklXaMrr/
    
    1. Lưu ý rằng các chỉ thị
    $ cat /etc/apache2/.htpasswd
    user1:$apr1$/woC1jnP$KAh0SsVn5qeSMjTtn0E9Q0
    user2:$apr1$QdR8fNLT$vbCEEzDj7LyqCMyNpSoBh/
    user3:$apr1$Mr5A0e.U$0j39Hp5FfxRkneklXaMrr/
    
    2 và
    $ cat /etc/apache2/.htpasswd
    user1:$apr1$/woC1jnP$KAh0SsVn5qeSMjTtn0E9Q0
    user2:$apr1$QdR8fNLT$vbCEEzDj7LyqCMyNpSoBh/
    user3:$apr1$Mr5A0e.U$0j39Hp5FfxRkneklXaMrr/
    
    3 sẽ được áp dụng theo thứ tự chúng được xác định

  2. Kết hợp hạn chế bằng xác thực IP và HTTP với chỉ thị. Nếu bạn đặt lệnh thành

    $ cat /etc/apache2/.htpasswd
    user1:$apr1$/woC1jnP$KAh0SsVn5qeSMjTtn0E9Q0
    user2:$apr1$QdR8fNLT$vbCEEzDj7LyqCMyNpSoBh/
    user3:$apr1$Mr5A0e.U$0j39Hp5FfxRkneklXaMrr/
    
    4, quyền truy cập sẽ được cấp nếu khách hàng đáp ứng cả hai điều kiện. Nếu bạn đặt lệnh thành
    $ cat /etc/apache2/.htpasswd
    user1:$apr1$/woC1jnP$KAh0SsVn5qeSMjTtn0E9Q0
    user2:$apr1$QdR8fNLT$vbCEEzDj7LyqCMyNpSoBh/
    user3:$apr1$Mr5A0e.U$0j39Hp5FfxRkneklXaMrr/
    
    5, quyền truy cập sẽ được cấp nếu khách hàng đáp ứng ít nhất một điều kiện

    location /api {
        #...
        satisfy all;    
    
        deny  192.168.1.2;
        allow 192.168.1.1/24;
        allow 127.0.0.1;
        deny  all;
    
        auth_basic           "Administrator’s Area";
        auth_basic_user_file conf/htpasswd;
    }
    

Hoàn thành ví dụ

Ví dụ cho thấy cách bảo vệ khu vực trạng thái của bạn bằng xác thực đơn giản kết hợp với hạn chế truy cập theo địa chỉ IP

Làm cách nào tôi có thể nhận được xác thực cơ bản trong PHP?

$_SERVER["REMOTE_USER"] - CGI tiêu chuẩn . $_SERVER["PHP_AUTH_USER"] - APACHE . $_SERVER["AUTH_USER"] - IIS .

Làm cách nào để sử dụng auth trong PHP?

Các bước tạo hệ thống xác thực đăng nhập người dùng trong PHP .
Tạo cơ sở dữ liệu MySQL với bảng người dùng
Tạo bảng đăng nhập người dùng để gửi chi tiết đăng nhập tới PHP
Tạo truy vấn để so sánh chi tiết đăng nhập của người dùng với cơ sở dữ liệu người dùng MySQL

Làm cách nào để đặt xác thực cơ bản trong tiêu đề HTTP PHP?

Hàm php xác thực () { Tiêu đề ("WWW-xác thực. lĩnh vực cơ bản = 'Kiểm tra hệ thống xác thực'"); Tiêu đề ("HTTP/1. 0 401 Trái phép"); echo "Bạn phải nhập ID và mật khẩu đăng nhập hợp lệ để truy cập tài nguyên này\n"; thoát; } if(. ngay lập tức($PHP_AUTH_USER). ($Seen Before == 1 &&

Basic Auth có tốt không?

Xác thực cơ bản đơn giản và thuận tiện, nhưng xác thực không an toàn . Nó chỉ nên được sử dụng để ngăn chặn truy cập không chủ ý từ các bên không ác ý hoặc được sử dụng kết hợp với công nghệ mã hóa như SSL.