PHP Basic Firewall

Overview

Latest Stable Version Total Downloads Latest Unstable Version 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


/**
 * Project basic-firewall
 * Created by PhpStorm
 * User: 713uk13m 
    
 * Copyright: 713uk13m 
    
 * 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


/**
 * Project basic-firewall
 * Created by PhpStorm
 * User: 713uk13m 
    
 * Copyright: 713uk13m 
    
 * 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 [email protected] nguyenanhung5891 @nguyenanhung

From Vietnam with Love ❤️

You might also like...
An experimental object oriented SSH api in PHP

PHP SSH (master) Provides an object-oriented wrapper for the php ssh2 extension. Requirements You need PHP version 5.3+ with the SSH2 extension. Insta

TCrypto is a simple and flexible PHP 5.3+ in-memory key-value storage library

About TCrypto is a simple and flexible PHP 5.3+ in-memory key-value storage library. By default, a cookie will be used as a storage backend. TCrypto h

Fetches random integers from random.org instead of using PHP's PRNG implementation

TrulyRandom Composer-compatible library to interact with random.org's API in order to generate truly random lists of integers, sequences of integers,

PHPGGC is a library of PHP unserialize() payloads along with a tool to generate them, from command line or programmatically.

PHPGGC: PHP Generic Gadget Chains PHPGGC is a library of unserialize() payloads along with a tool to generate them, from command line or programmatica

Let's Encrypt/ACME Command Line client written in PHP

Acme PHP Acme PHP is a simple yet very extensible CLI client for Let's Encrypt that will help you get and renew free HTTPS certificates. Acme PHP is a

PHP Malware Finder

PHP Malware Finder _______ __ __ _______ | ___ || |_| || | | | | || || ___| | |___| || || |___ Webshell finder, |

Compatibility with the password_* functions that ship with PHP 5.5

password_compat This library is intended to provide forward compatibility with the password_* functions that ship with PHP 5.5. See the RFC for more d

A petite library of encryption functions for PHP

🔐 dcrypt A petite library of essential encryption functions for PHP 7.1+. For legacy PHP version support, look here. If you need a dcrypt inspired en

A proof of concept of a PHP Miner that can mine DuinoCoin

Duino Coin - PHP Miner This is a proof of concept. This miner is provided as is, with no guarantee it will work as intended for you.

Releases(v2.0.1)
  • v2.0.1(Jun 21, 2022)

    What's Changed

    • Release version 2.0.1 by @nguyenanhung in https://github.com/nguyenanhung/basic-firewall/pull/1

    New Contributors

    • @nguyenanhung made their first contribution in https://github.com/nguyenanhung/basic-firewall/pull/1

    Full Changelog: https://github.com/nguyenanhung/basic-firewall/compare/v2.0.0...v2.0.1

    Source code(tar.gz)
    Source code(zip)
  • v1.0.5(Jun 21, 2022)

  • v2.0.0(Sep 24, 2021)

  • v1.0.4(Sep 24, 2021)

  • v1.0.3(Sep 18, 2021)

  • v1.0.2(Sep 18, 2021)

  • v1.0.1(Sep 17, 2021)

    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

    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

    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->accessDeniedResponse(); // Response 403 http code, Access Denied message
    }
    
    // ==================================== End Firewall
    

    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 handle() 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|Short notation IPV4|192.168.0.1| Range|192.168.0.0-192.168.1.60|Includes all IPs from 192.168.0.0 to 192.168.0.255
    and from 192.168.1.0 to 198.168.1.60 Wild card|192.168.0.*|IPs starting with 192.168.0
    Same as IP Range 192.168.0.0-192.168.0.255 Subnet mask|192.168.0.0/255.255.255.0|IPs starting with 192.168.0
    Same as 192.168.0.0-192.168.0.255 and 192.168.0.* CIDR Mask|192.168.0.0/24|IPs starting with 192.168.0
    Same as 192.168.0.0-192.168.0.255 and 192.168.0.*
    and 192.168.0.0/255.255.255.0

    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 packages 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 | [email protected] | nguyenanhung5891 | @nguyenanhung |

    From Vietnam with Love ❤️

    Source code(tar.gz)
    Source code(zip)
Owner
Hung Nguyen
Một tiêu một kiếm dọc giang hồ
Hung Nguyen
PHPIDS (PHP-Intrusion Detection System) is a simple to use, well structured, fast and state-of-the-art security layer for your PHP based web application

PHPIDS PHPIDS (PHP-Intrusion Detection System) is a simple to use, well structured, fast and state-of-the-art security layer for your PHP based web ap

null 752 Jan 3, 2023
php-chmod is a PHP library for easily changing permissions recursively.

PHP chmod php-chmod is a PHP library for easily changing the permissions recursively. Versions & Dependencies Version PHP Documentation ^1.1 ^7.4 curr

Mathias Reker ⚡️ 5 Oct 7, 2022
PHP 5.x support for random_bytes() and random_int()

random_compat PHP 5.x polyfill for random_bytes() and random_int() created and maintained by Paragon Initiative Enterprises. Although this library sho

Paragon Initiative Enterprises 8k Jan 5, 2023
PHP Secure Communications Library

phpseclib - PHP Secure Communications Library Supporting phpseclib Become a backer or sponsor on Patreon One-time donation via PayPal or crypto-curren

null 4.9k Jan 7, 2023
Simple Encryption in PHP.

php-encryption composer require defuse/php-encryption This is a library for encrypting data with a key or password in PHP. It requires PHP 5.6 or new

Taylor Hornby 3.6k Jan 3, 2023
Standards compliant HTML filter written in PHP

HTML Purifier HTML Purifier is an HTML filtering solution that uses a unique combination of robust whitelists and aggressive parsing to ensure that no

Edward Z. Yang 2.7k Jan 5, 2023
A database of PHP security advisories

PHP Security Advisories Database The PHP Security Advisories Database references known security vulnerabilities in various PHP projects and libraries.

null 1.9k Dec 18, 2022
A php.ini scanner for best security practices

Scanner for PHP.ini The Iniscan is a tool designed to scan the given php.ini file for common security practices and report back results. Currently it

psec.io 1.5k Dec 5, 2022
🤖 Id obfuscation based on Knuth's multiplicative hashing method for PHP.

Optimus id transformation With this library, you can transform your internal id's to obfuscated integers based on Knuth's integer hash. It is similar

Jens Segers 1.2k Jan 2, 2023
㊙️ AntiXSS | Protection against Cross-site scripting (XSS) via PHP

㊙️ AntiXSS "Cross-site scripting (XSS) is a type of computer security vulnerability typically found in Web applications. XSS enables attackers to inje

Lars Moelleken 570 Dec 16, 2022