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
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
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
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
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
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"; #... }
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ệ
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
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