nguyenanhung/basic-firewall

PHP 基础防火墙

v2.0.8 2024-08-20 05:46 UTC

README

Latest Stable Version Total Downloads Latest Unstable Version License PHP Version Require

PHP 基础防火墙

PHP Basic Firewall 库是用 PHP 编写的,提供了一种简单的方法来限制网站 / api / webservice 的访问权限,基于用户的访问 IP 地址。

通常,最好的防火墙应该从系统层设置:操作系统已经安装了如 iptablesfirewalldCSF 防火墙。

然而,在某些情况下,开发者没有系统权限或者不太熟悉系统设置。或者在某些情况下,希望主动控制,可以将 PHP Basic Firewall 包集成到应用层。

版本支持

  • V1.x 支持 PHP 所有版本 >=5.4
  • V2.x 支持 PHP 所有版本 >=7.0

使用说明

安装包

使用以下命令通过 composer 安装 Basic Firewall 包

composer require nguyenanhung/basic-firewall

集成防火墙的说明

参考以下示例代码中的集成方式

<?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

在上述示例中,只有以 192.168.0 开头的 IP(排除 192.168.0.50)和 127.0.0.1 才能被防火墙允许访问。其他所有 IP,防火墙将返回 false

  • checkUserConnect(false) 声明 truefalse 来确定默认防火墙是允许还是拒绝访问(可选 - 默认 false)。如果默认允许访问为 true,如果默认拒绝访问为 false
  • setIpWhiteList($whiteList) 声明允许访问的 $whiteList IP 列表
  • setIpBlackList($blackList) 声明拒绝访问的 $blackList IP 列表

IP 列表格式

防火墙支持以下格式的 IP 白名单和黑名单输入

集成系统检查函数的说明

此包还提供了一个额外的实用工具层,用于检查网络、扩展或检查与 MySQL 数据库的连接。以下是如何使用的参考

<?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,有关许可证的详细信息请参阅此处

此包使用了由 M6Web 提供的 m6web/firewall 包,您也可以单独使用此包,链接为 此处

支持

如果您有任何问题或需要支持,请按照以下信息联系

来自越南的爱❤️