nguyenanhung/basic-firewall 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

nguyenanhung/basic-firewall

Composer 安装命令:

composer require nguyenanhung/basic-firewall

包简介

PHP Basic Firewall

关键字:

README 文档

README

Latest Stable Version Total Downloads Daily Downloads Monthly Downloads License PHP Version Require

PHP Basic Firewall

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.

Version Support

  • V1.x support all PHP version >=5.4
  • V2.x support all PHP version >=7.0

Hướng dẫn sử dụng

Cài đặt gói

Cài đặt gói Basic Firewall thông qua composer với lệnh như sau

composer require nguyenanhung/basic-firewall

Hướng dẫn tích hợp 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 <dev@nguyenanhung.com>
 * Copyright: 713uk13m <dev@nguyenanhung.com>
 * 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áo true hoặc false để xác định mặc định firewall cho phép hay từ chối truy cập ( Optional - Default false). true nếu mặc định cho phép truy cập, false nếu mặc định từ chối
  • setIpWhiteList($whiteList) khai báo $whiteList IP list cho phép truy cập
  • setIpBlackList($blackList) khai báo $blackList IP list từ chối truy cập

IP List Formats

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
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
192.168.0.* cũng như 192.168.0.0/255.255.255.0

Hướng dẫn tích hợp hàm tiện ích Check System

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 <dev@nguyenanhung.com>
 * Copyright: 713uk13m <dev@nguyenanhung.com>
 * 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');

LICENSE

Gói được phân phối bởi giấy phép License, 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

Hỗ trợ

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 Email Skype Facebook
Hung Nguyen dev@nguyenanhung.com nguyenanhung5891 @nguyenanhung

From Vietnam with Love ❤️

nguyenanhung/basic-firewall 适用场景与选型建议

nguyenanhung/basic-firewall 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 9.78k 次下载、GitHub Stars 达 6, 最近一次更新时间为 2021 年 08 月 31 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「php」 「firewall」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 nguyenanhung/basic-firewall 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 nguyenanhung/basic-firewall 我们能提供哪些服务?
定制开发 / 二次开发

基于 nguyenanhung/basic-firewall 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 9.78k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 6
  • 点击次数: 7
  • 依赖项目数: 6
  • 推荐数: 5

GitHub 信息

  • Stars: 6
  • Watchers: 3
  • Forks: 3
  • 开发语言: PHP

其他信息

  • 授权协议: GPL-3.0
  • 更新时间: 2021-08-31