utopia-php / abuse
一个简单的滥用库,用于管理应用程序的使用限制
0.45.0
2024-09-18 04:39 UTC
Requires
- php: >=8.0
- ext-curl: *
- ext-pdo: *
- ext-redis: *
- utopia-php/database: 0.55.*
Requires (Dev)
- laravel/pint: 1.5.*
- phpbench/phpbench: ^1.2
- phpstan/phpstan: ^1.9
- phpunit/phpunit: ^9.4
- dev-main
- 0.45.0
- 0.44.0
- 0.44.0-RC1
- 0.43.0
- 0.42.0
- 0.41.0
- 0.40.0
- 0.39.0
- 0.38.0
- 0.37.1
- 0.37.0
- 0.36.0
- 0.35.0
- 0.34.x-dev
- 0.34.1
- 0.34.0
- 0.33.0
- 0.32.0
- 0.31.1
- 0.31.0
- 0.30.0
- 0.29.0
- 0.28.0
- 0.27.0
- 0.26.0
- 0.25.0
- 0.24.0
- 0.23.0
- 0.22.1
- 0.22.0
- 0.21.0
- 0.20.0
- 0.19.0
- 0.18.0
- 0.17.0
- 0.16.0
- 0.15.0
- 0.14.0
- 0.13.1
- 0.13.0
- 0.12.0
- 0.11.0
- 0.10.0
- 0.9.0
- 0.8.0
- 0.7.0
- 0.6.3
- 0.6.2
- 0.6.1
- 0.6.0
- 0.5.0
- 0.4.2
- 0.4.1
- 0.4.0
- 0.3.1
- 0.3.0
- 0.2.2
- 0.2.1
- 0.2.0
- v0.1.0
- dev-chore-findones-empties
- dev-chore-update-database
- dev-feat-redis-adapter
- dev-ver-bump
- dev-feat-use-utopia-base-for-tests
- dev-add-key-attribute
- dev-query-merge
- dev-refactor-permissions
This package is auto-updated.
Last update: 2024-09-18 05:43:37 UTC
README
Utopia 框架的滥用库是一个简单轻量级的库,用于管理应用程序的使用限制。这个库的目标是尽可能简单,易于学习和使用。这个库由Appwrite 团队维护。
尽管这个库是Utopia 框架项目的一部分,但它不依赖任何其他库,可以独立于任何其他 PHP 项目或框架使用。
入门指南
使用 composer 安装
composer require utopia-php/abuse
时间限制滥用
时间限制滥用允许每个键(操作)在给定的时间范围内执行[X]次。此适配器使用 MySQL / MariaDB 存储使用尝试。在使用它之前,请创建表模式,如本存储库中所述(./data/schema.sql)
<?php require_once __DIR__ . '/../../vendor/autoload.php'; use Utopia\Abuse\Abuse; use Utopia\Abuse\Adapters\TimeLimit; use Utopia\Cache\Adapter\None as NoCache; use Utopia\Cache\Cache; use Utopia\Database\Adapter\MySQL; use Utopia\Database\Database; $dbHost = '127.0.0.1'; $dbUser = 'travis'; $dbPass = ''; $dbPort = '3306'; $pdo = new PDO("mysql:host={$dbHost};port={$dbPort};charset=utf8mb4", $dbUser, $dbPass, [ PDO::ATTR_TIMEOUT => 3, // Seconds PDO::ATTR_PERSISTENT => true, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_EMULATE_PREPARES => true, PDO::ATTR_STRINGIFY_FETCHES => true, ]); $db = new Database(new MySQL($pdo), new Cache(new NoCache())); $db->setNamespace('namespace'); // Limit login attempts to 10 time in 5 minutes time frame $adapter = new TimeLimit('login-attempt-from-{{ip}}', 10, (60 * 5), $db); $adapter->setup(); //setup database as required $adapter->setParam('{{ip}}', '127.0.0.1') ; $abuse = new Abuse($adapter); // Use vars to resolve adapter key if($abuse->check()) { throw new Exception('Service was abused!'); // throw error and return X-Rate limit headers here }
ReCaptcha 滥用
ReCaptcha 滥用控制器使用 Google ReCaptcha 服务来检测服务是否被机器人滥用。要使用此适配器,您需要从 Google ReCaptcha 服务的管理控制台创建 API 密钥。
<?php require_once __DIR__ . '/../../vendor/autoload.php'; use Utopia\Abuse\Abuse; use Utopia\Abuse\Adapters\ReCaptcha; // Limit login attempts to 10 time in 5 minutes time frame $adapter = new ReCaptcha('secret-api-key', $_POST['g-recaptcha-response'], $_SERVER['REMOTE_ADDR']); $abuse = new Abuse($adapter); if($abuse->check()) { throw new Exception('Service was abused!'); // throw error and return X-Rate limit headers here }
注意:上面的代码仅用于示例目的。在将用户输入用于您的代码之前,始终建议验证用户输入。如果您正在使用负载均衡器或任何代理服务器,您可能需要从 HTTP_X_FORWARDED_FOR 标头中获取用户 IP。
系统要求
Utopia 框架需要 PHP 8.0 或更高版本。我们建议在可能的情况下始终使用最新的 PHP 版本。
版权和许可
MIT 许可证 (MIT) https://open-source.org.cn/licenses/mit-license.php