basekit/signed-url

生成带有过期时间的安全URL

1.0.1 2022-04-04 14:20 UTC

This package is auto-updated.

Last update: 2024-09-04 19:30:10 UTC


README

Latest Version on Packagist GitHub Tests Action Status Total Downloads

简介

此包用于简单生成和验证签名URL。

什么是签名URL?

签名URL是一种提供有限权限和时间的URL,用于发起请求。签名URL在其查询字符串中包含认证信息,允许无凭证的用户对资源执行特定操作 来源

安装

您可以通过composer安装此包

composer require basekit/signed-url

使用方法

创建带有过期时间的签名URL

$urlSigner = new BaseKit\SignedUrl('secret');
$url = $urlSigner->sign('http://dev.app', new \DateTime("+ 10 days"));
echo $url;
// http://dev.app?expires=1597606297&signature=2bcbe00d36010bae3e6bc6e6abe79f6cbc135f360285eeb17e9c53753b4b223a"

创建不带过期时间的签名URL

$urlSigner = new BaseKit\SignedUrl('secret');
$url = $urlSigner->sign('http://dev.app');
echo $url;
// http://dev.app?expires=1597606297&signature=2bcbe00d36010bae3e6bc6e6abe79f6cbc135f360285eeb17e9c53753b4b223a"

验证签名URL

$url = "http://dev.app?expires=1597606297&signature=2bcbe00d36010bae3e6bc6e6abe79f6cbc135f360285eeb17e9c53753b4b223a";
$urlSignValidator = new BaseKit\SignedUrl('secret');
$valid = $urlSignValidator->validate($url);
var_dump($valid);
// bool(true)

此包将在URL中追加1个或2个查询字符串参数,表示链接的过期时间(如果提供)和签名。签名本身是通过原始URL、提供的过期日期(如果提供)以及项目特定的密钥生成的。

在对象实例化中,可以覆盖这些查询字符串参数的名称,如下所示

$urlSigner = new BaseKit\SignedUrl('secret', 'expirationParam', 'secureSignature');
$url = $urlSigner->sign('http://dev.app', new \DateTime("+ 10 days"));
echo $url;
// https://www.dev.app/?expirationParam=1597608096&secureSignature=ef6839ad6b1a4cfca8e3e04bb2a74da0e9d3d9c4d9870125f499f75c9ef5d2b6

测试

composer test

致谢

许可证

MIT许可证(MIT)。请参阅 许可证文件 获取更多信息。