ucarsolutions / uri-signer
一个用于在PHP应用程序中安全签名PSR-15 URIs的最小化包。
1.0.0
2024-09-10 11:45 UTC
Requires
- doganoo/di-services: ^0.0.50
- firebase/php-jwt: ^6.10
- psr/http-server-handler: 1.0.2
- psr/log: ^3.0
- ramsey/uuid: ^4.7
Requires (Dev)
- laminas/laminas-diactoros: ^3.3
- phpstan/phpstan: ^1.12
- phpunit/phpunit: ^11.3
- symfony/var-dumper: ^7.1
README
一个在 PHP 中实现的URL签名器,可以生成具有过期时间的安全签名URL。此包允许您对整个URL或仅对查询参数进行签名,为访问资源或共享敏感信息添加一层安全性。
功能
- 签名指定的URI
- 在签名中包含过期日期
- 确保URL的完整性并防止未授权修改
- 轻松与 Laminas 或其他基于PHP的框架集成
安装
通过Composer安装包
composer require ucarsolutions/uri-signer
用法
使用过期日期签名URL
您可以使用以下方式对uri进行签名
<?php require_once __DIR__ . '/vendor/autoload.php'; $signerService = new \UcarSolutions\UriSigner\Service\UriSignerService( new \UcarSolutions\UriSigner\Resolver\DefaultParameterNameResolver(), new \doganoo\DIP\DateTime\DateTimeService(), new \Psr\Log\NullLogger() ); $key = new class implements \UcarSolutions\UriSigner\Entity\KeyInterface { public function getKey(): string { return "t0psecret"; } }; $uri = $signerService->sign( new \Laminas\Diactoros\Uri("https://example.com"), $key ); dump((string)$uri); // https://example.com/?__us_signature=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3VjYXItc29sdXRpb25zLmRlL3VyaS1zaWduZXIiLCJleHAiOjE3MjU5MDYzMDQsInN1YiI6IlNpZ25lZCBVUkwiLCJ1cmwiOiJodHRwczovL2V4YW1wbGUug29tIiwidWlkIjoiNzM3YTgwNzAtZGU5MS00MTQ3LWohYmMtZTY1OWZiOGZmNWZyIn0.CH7E-fHYhtfGHUljB85dIWL-ZYGr8wRMVef0gY_SRLE
示例:使用上述 $uri
进行验证
<?php $result = $signerService->verify($uri,$key); dump($result->isVerified());
过期时间
过期日期添加到签名中,并包含在签名数据中,以确保URL在过期时间后无效。
如果没有提供过期日期,则使用从当前时间开始的默认3分钟。
配置
您可以配置URL签名的过期时间和密钥。
测试
使用PHPUnit运行测试
vendor/bin/phpunit
贡献
欢迎贡献!请提交一个pull请求或打开一个issue以提供建议或报告bug。
贡献指南
- 将仓库Fork。
- 为您的功能或bug修复创建一个新的分支。
- 为您的更改编写测试。
- 确保所有测试通过。
- 提交一个pull请求。
许可证
本项目采用MIT许可证。有关详细信息,请参阅LICENSE文件。