ucarsolutions/uri-signer

一个用于在PHP应用程序中安全签名PSR-15 URIs的最小化包。

1.0.0 2024-09-10 11:45 UTC

This package is auto-updated.

Last update: 2024-09-10 11:46:28 UTC


README

一个在 PHP 中实现的URL签名器,可以生成具有过期时间的安全签名URL。此包允许您对整个URL或仅对查询参数进行签名,为访问资源或共享敏感信息添加一层安全性。

Build Status License: MIT

功能

  • 签名指定的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。

贡献指南

  1. 将仓库Fork。
  2. 为您的功能或bug修复创建一个新的分支。
  3. 为您的更改编写测试。
  4. 确保所有测试通过。
  5. 提交一个pull请求。

许可证

本项目采用MIT许可证。有关详细信息,请参阅LICENSE文件。