Thư viện PHP Basic Firewall
được xây dựng bằng PHP cung cấp 1 phương thức đơn giản để hạn chế quyền truy cập website / api / webservice dựa vào địa chỉ IP
truy cập của người dùng.
Thông thường Firewall tốt nhất nên được thiết đặt từ tầng hệ thống: hệ điều hành có cài tường lửa như iptables
, firewalld
hay CSF
.
Tuy nhiên, trong 1 số trường hợp DEV không có quyền can thiệp hệ thống hoặc không nắm chắc. Hoặc giả như muốn chủ động trong các tình huống thì có thể tích hợp gói PHP Basic Firewall
này vào để thực hiện từ tầng Application.
- V1.x support all PHP version
>=5.4
- V2.x support all PHP version
>=7.0
Cài đặt gói Basic Firewall thông qua composer với lệnh như sau
composer require nguyenanhung/basic-firewall
Tham khảo cách tích hợp thông qua hướng dẫn tại đoạn code ví dụ dưới đây
<?php
/**
* Project basic-firewall
* Created by PhpStorm
* User: 713uk13m <[email protected]>
* Copyright: 713uk13m <[email protected]>
* Date: 09/01/2021
* Time: 00:50
*/
require_once __DIR__ . '/vendor/autoload.php';
use nguyenanhung\PhpBasicFirewall\FirewallIP;
// ==================================== Setup List IP Whitelist
// Setup constants HUNGNG_IP_WHITELIST
defined('HUNGNG_IP_WHITELIST') or define('HUNGNG_IP_WHITELIST', array(
'127.0.0.1',
'192.168.0.*',
));
// Or Whitelist Array
$whiteList = array(
'127.0.0.1',
'192.168.0.*',
);
// ==================================== Setup List IP Blacklist
// Setup constants HUNGNG_IP_BLACKLIST
defined('HUNGNG_IP_BLACKLIST') or define('HUNGNG_IP_BLACKLIST', array(
'127.0.0.1',
'192.168.0.*',
));
// Or Blacklist Array
$blackList = array(
'192.168.0.50',
);
// ==================================== Start Firewall
$firewall = new FirewallIP();
$firewall->setLogDestination(__DIR__ . '/logs/FirewallLog.log')
->setIpWhiteList($whiteList)
->setIpBlackList($blackList)
->checkUserConnect(false);
if (true !== $firewall->isAccess()) {
$firewall->writeErrorLog($firewall->errorLogMessage()); // Write log to /tmp/FirewallLog.log
$firewall->accessDeniedResponse(); // Response 403 http code, Access Denied message
}
// ==================================== End Firewall
// Pass qua firewall sẽ là các đoạn code thực hiện nghiệp vụ của bạn
Trong ví dụ trên, chỉ những IP bắt đầu bằng 192.168.0 (loại trừ 192.168.0.50) và 127.0.0.1 sẽ được cho phép truy cập bởi Firewall. Tất cả các IP khác, firewall sẽ return false
checkUserConnect(false)
khai báotrue
hoặcfalse
để xác định mặc định firewall cho phép hay từ chối truy cập (Optional - Defaultfalse
).true
nếu mặc định cho phép truy cập,false
nếu mặc định từ chốisetIpWhiteList($whiteList)
khai báo$whiteList
IP list cho phép truy cậpsetIpBlackList($blackList)
khai báo$blackList
IP list từ chối truy cập
Firewall hỗ trợ input các IP whitelist và blacklist như sau
Type | Syntax | Details |
---|---|---|
IPV6 | ::1 |
Hỗ trợ các viết tắt |
IPV4 | 192.168.0.1 |
|
Range | 192.168.0.0-192.168.1.60 |
Bao gồm tất cả các IP từ 192.168.0.0 đến 192.168.0.255 và từ 192.168.1.0 đến 198.168.1.60 |
Wild card | 192.168.0.* |
Tất cả IP bắt đầu bằng 192.168.0 Nó tương tự với cách khai báo 192.168.0.0-192.168.0.255 |
Subnet mask | 192.168.0.0/255.255.255.0 |
Tất cả IP bắt đầu bằng 192.168.0 Nó tương tự với cách khai báo 192.168.0.0-192.168.0.255 và 192.168.0.* |
CIDR Mask | 192.168.0.0/24 |
Tất cả IP bắt đầu bằng 192.168.0 Nó tương tự với cách khai báo 192.168.0.0-192.168.0.255 và 192.168.0.* cũng như 192.168.0.0/255.255.255.0 |
Gói này cung cấp thêm 1 lớp tiện ích, dùng kiểm tra mạng, extension hoặc kiểm tra kết nối tới MySQL Database. Tham khảo cách sử dụng dưới đây
<?php
/**
* Project basic-firewall
* Created by PhpStorm
* User: 713uk13m <[email protected]>
* Copyright: 713uk13m <[email protected]>
* Date: 09/01/2021
* Time: 00:55
*/
require_once __DIR__ . '/../vendor/autoload.php';
use nguyenanhung\PhpBasicFirewall\CheckSystem;
$system = new CheckSystem();
// Kiểm tra phiên bản PHP
$system->phpVersion();
// Kiểm tra các extension cần thiết
$system->checkExtension('curl');
$system->checkExtension('pdo');
$system->checkExtension('mysqli');
$system->checkExtension('gd');
$system->checkExtension('mbstring');
$system->checkExtension('json');
$system->checkExtension('session');
$system->checkExtension('sockets');
$system->checkExtension('bcmath');
// Kiểm tra kết nối tới 1 server nào đó
$system->phpTelnet('127.0.0.1', 3306);
$system->phpTelnet('127.0.0.1', 2842);
// Kiểm tra kết nối CSDL
$system->checkConnectDatabase('127.0.0.1', '3306', 'my_data', 'root', 'hungna');
Gói được phân phối bởi giấy phép , tham khảo chi tiết giấy phép tại đây
Gói có sử dụng packages m6web/firewall
được cung cấp bởi M6Web
, bạn cũng có thể sử dụng riêng gói này theo đường link tại đây
Nếu có bất kì câu hỏi hoặc cần hỗ trợ nào, liên hệ theo thông tin sau
Name | Skype | ||
---|---|---|---|
Hung Nguyen | [email protected] | nguyenanhung5891 | @nguyenanhung |
From Vietnam with Love ❤️