oyeaussie / phpfirewall
PHPFirewall是一个允许/阻止通过IP地址连接到您的网络资源的小工具。IP地址详情可以从本地数据库获取,或者通过调用IP2Location.io的API来获取。
Requires
- php: ^7.2.5 || ^8.0
- ext-bcmath: *
- ext-curl: *
- ext-json: *
- guzzlehttp/guzzle: ^7.8
- ip2location/ip2location-io-php: ^1.0
- ip2location/ip2location-php: ^9.7
- ip2location/ip2proxy-php: ^4.1
- league/csv: ^9.16.0
- league/flysystem: ^3.28
- monolog/monolog: ^3.7
- nesbot/carbon: *
- phpterminal/phpterminal: *
- phpterminal/phpterminal-modules-firewall: *
- phpterminal/phpterminal-plugins-auth: *
- rakibtg/sleekdb: *
- symfony/http-foundation: *
README
PHPFirewall是一个允许/阻止通过IP地址连接到您的网络资源的小工具。IP地址详情可以从本地数据库获取,或者通过调用IP2Location.io的API来获取。
为什么是这个项目?
互联网一直在发展。每天都有新的设备上线,这要求ISP将新的网络范围添加到他们的系统中。这使得像思科或pfsense(Linux)这样的防火墙很难管理策略或了解特定地区的ISP引入的所有网络。大多数网络黑客攻击都是由于不正确的/失败的防火墙规则引起的。很难知道一个地区的所有网络IP地址范围。
我想创建一个可以在共享主机上安装的防火墙应用程序,它不需要物理访问硬件,也不需要专用硬件来运行。PHPFirewall可以在Cpanel等共享主机环境中运行,并且表现良好。大多数Cpanel提供商都通过SSH为用户提供访问权限,因此可以通过CLI管理防火墙。
整个想法是不必担心哪些IP地址属于世界的哪个部分。一行代码就足以允许该地区的连接,而防火墙将负责阻止其他连接。Ip2location.io API与该应用程序PHPFirewall一起,使得这一点成为可能。
代码示例
//In index.php <?php include 'vendor/autoload.php'; //At this point, we assume that firewall configuration and/or IP2location API keys are set! if (!(new \PHPFirewall\Firewall)->checkIp()) { //Send 404 http_response_code(404); exit; } // Rest of your code
文档
致谢
感谢以下项目为他们的出色工作。没有他们,这个项目将不可能实现。
Composer
Symphony Http Foundation
Ip2location.io - https://www.ip2location.io/
Ip2location PHP模块 - https://github.com/chrislim2888/IP2Location-PHP-Module
Ip2location代理PHP模块 - https://github.com/ip2location/ip2proxy-php
Guzzle - https://github.com/guzzle/guzzle
Flysystem - https://github.com/thephpleague/flysystem
SleekDB - https://github.com/SleekDB/SleekDB
The PHP League CSV - https://github.com/thephpleague/csv
Carbon Date : https://carbon.nesbot.com/
Codeception : https://codeception.com/
PHPUnit : https://phpunit.de/
问题/讨论/新功能
如果您遇到错误或想讨论与此工具或添加新功能相关的问题,请随意提出问题。
给我买咖啡/啤酒
时间是宝贵的。如果您觉得这个项目很有帮助,并且它为您节省了宝贵的时间,相当于一杯咖啡或一杯啤酒...
雇佣我
如果您想开发一个需要专家级编程的PHP应用程序,我可以为您提供服务。请与我联系,我们可以进一步讨论。