SonataExtraBundle cung cấp một bộ tính năng nâng cao để quản lý các quy tắc tường lửa trong môi trường Sonata Admin. Gói này cho phép các quản trị viên tạo và quản lý các quy tắc để lọc các yêu cầu dựa trên các tiêu chí khác nhau như từ bị cấm, địa chỉ IP và đại lý người dùng.
Tính năng
- Quản lý các quy tắc tường lửa: Định nghĩa và quản lý các quy tắc tường lửa để lọc các yêu cầu đến.
- Hỗ trợ nhiều tiêu chí: lọc các truy vấn dựa trên từ cấm, địa chỉ IP và agent người dùng.
- Ứng dụng động các quy tắc: Áp dụng các quy tắc dựa trên các tham số của yêu cầu (GET, POST, tiêu đề).
- Tích hợp bộ nhớ đệm: các quy tắc được lưu trong bộ nhớ đệm để cải thiện hiệu suất với khả năng đặt lại bộ nhớ đệm khi có các bản cập nhật.
- Phân tích dữ liệu đệ quy: quản lý các cấu trúc dữ liệu phức tạp trong các tham số truy vấn.
Kích hoạt
Thêm bộ lắng nghe tường lửa trong của bạn services.yaml
sonata-extra.Firewall_Listener:
class: Partitech\SonataExtra\EventListener\FirewallListener
tags:
- { name: kernel.event_listener, event: kernel.request, method: onKernelRequest }
Thêm giao diện quản trị vào của bạn sonata_admin.yaml
firewall:
icon: fa fa-cogs
label: Firewall
items:
- Partitech\SonataExtra\Admin\SecFirewallRuleAdmin
- Partitech\SonataExtra\Admin\SecStopWordAdmin
- Partitech\SonataExtra\Admin\SecIpRuleAdmin
Tạo quy tắc tường lửa
Các quy tắc tường lửa có thể được tạo và quản lý thông qua bảng điều khiển Sonata Admin. Các loại quy tắc sau được hỗ trợ:
- Một từ bị cấm: Chặn các yêu cầu chứa các từ khóa đã chỉ định.
- IP: Chặn các yêu cầu từ các địa chỉ IP được chỉ định.
- Trình duyệt người dùng: Chặn các yêu cầu từ các trình duyệt người dùng được chỉ định.
Cấu hình các quy tắc
Mỗi quy tắc bao gồm các yếu tố sau:
type: loại quy tắc (ví dụ: 'stop_word', 'ip', 'user_agent').source: nguồn dữ liệu cần phân tích (ví dụ: 'GET', 'POST', 'HEADER').parameters: danh sách các giá trị cần kiểm tra so với quy tắc.matchMode: xác định xem quy tắc có cần tìm kết quả trùng khớp chính xác (equal) hoặc một phần tương ứng (contain).
Quản lý bộ nhớ đệm
Gói sử dụng bộ nhớ đệm để cải thiện hiệu suất. Bộ nhớ đệm được tự động đặt lại mỗi khi một quy tắc được cập nhật, tạo mới hoặc xóa.
Điều chỉnh ví dụ cho phù hợp với phiên bản đã cài đặt
Các ví dụ Symfony và Sonata vẫn gắn với các phiên bản được chỉ ra trong bài viết. Symfony 4.x và Symfony 6.2 không còn được duy trì: đối với một dự án hiện tại, hãy sử dụng một nhánh được duy trì và tài liệu tương ứng chính xác với các phụ thuộc của bạn.
php bin/console about
composer show symfony/framework-bundle sonata-project/admin-bundle
Trước khi tiếp tục với mã, hãy kiểm tra các chữ ký, dịch vụ, tuyến đường và mẫu liên quan. Sau đó thêm một bài kiểm tra chức năng bao phủ quyền, mã HTTP và kết quả hiển thị.
Tham chiếu : phiên bản Symfony được hỗ trợ.