arubacao/aws-ip-range-middleware

Laravel 中间件,用于亚马逊网络服务(AWS)IP 地址范围

1.0.2 2021-05-03 00:05 UTC

This package is auto-updated.

Last update: 2024-08-29 04:37:17 UTC


README

Latest Version on Packagist Run Tests Codecov Total Downloads

此包允许对传入的 请求 进行验证,以匹配官方的 亚马逊网络服务(AWS)IP 地址范围
使用此功能可以确定传入的请求是否确实来自 AWS 基础设施,例如用于 简单通知服务(SNS) 有效负载。

特性

  • 仅允许来自 AWS 的传入 HTTP 请求,拒绝所有其他请求
  • AWS ip 地址范围 会按需获取,因此始终是最新的
  • ip 地址范围 缓存 -> 每天只获取一次
  • 在从 AWS 获取 ip 地址范围 时遇到网络问题,使用指数退避策略重试

备注

  • arubacao/aws-ip-range-middleware 在 Laravel 5.0 - 7.* 和 PHP 7.0 - 7.3 上功能正常且经过全面测试。

安装

使用 composer 安装此包

composer require arubacao/aws-ip-range-middleware

注册中间件

首先在您的 app/Http/Kernel.php 文件中将 aws-ip-range-middleware 分配给 $routeMiddleware 属性的密钥。

// Within App\Http\Kernel Class...

protected $routeMiddleware = [
    'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
    'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
    // .
    // .
    // .
    'aws-ip-range' => \Arubacao\AwsIpRange\AwsIpRangeMiddleware::class,
];

用法

一旦在 HTTP 核心中定义了 aws-ip-range-middleware,您可以使用中间件方法将其分配给路由

Route::post('api/sns', function () {
    //
})->middleware('aws-ip-range');


// Older Laravel Versions:
Route::post('api/sns', ['middleware' => 'aws-ip-range', function () {
    //
}]);

在分配中间件时,也可以传递完全限定的类名
注意:在这种情况下,您不需要在 HTTP 核心中注册 aws-ip-range-middleware

use Arubacao\AwsIpRange\AwsIpRangeMiddleware;

Route::post('api/sns', function () {
    //
})->middleware(AwsIpRangeMiddleware::class);


// Older Laravel Versions:
Route::post('api/sns', ['middleware' => AwsIpRangeMiddleware::class, function () {
    //
}]);

待办事项

  • 启用/禁用缓存
  • 选择缓存存储
  • 获取 ip 地址范围并将其存储在本地的命令

测试

composer test

贡献

有关详细信息,请参阅 CONTRIBUTING

鸣谢

许可证

MIT 许可证(MIT)。有关更多信息,请参阅 许可证文件