rollerworks/uri-encoder

一个简单的库,用于安全地将字符串编码为URI使用。

v2.1.0 2023-11-05 10:40 UTC

This package is auto-updated.

Last update: 2024-09-05 12:23:42 UTC


README

此软件包提供了Rollerworks UriEncoder组件,一个简单的库,用于安全地将字符串编码为URI。此外还提供了zlib压缩。

注意

请勿使用此库进行编码授权/重置令牌,因为这会泄露信息。仅使用此库传输“公开”信息,如过滤偏好。

使用paragonie/constant_time_encoding进行时间安全的编/解码。不要为敏感信息使用转换缓存或压缩!

安装

要安装此软件包,请将rollerworks/search-uri-encoder添加到您的composer.json中

$ php composer.phar require rollerworks/search-uri-encoder

现在,Composer将自动下载所有必需的文件,并为您安装它们。

要求

您需要至少PHP 8.1,并且可选地启用对gzip压缩的支持。

此软件包没有其他外部依赖。

基本用法

此库的使用非常简单,每个编码器编码和解码一个URL字符串。

要编码一个字符串以安全地在URL中使用,请在编码器上调用encodeUri()。要解码已编码的字符串,以获得原始值,请在编码器上调用decodeUri()

注意: decode()方法将静默忽略无效数据,并返回null。

Base64UriEncoder

use Rollerworks\Component\UriEncoder\Encoder as UriEncoder;

$stringEncode = 'This string is not safe, for direct usage & must encoded';

$base64Encoder = new UriEncoder\Base64UriEncoder();

$safeValue = $base64Encoder->encodeUri($stringEncode);
// $safeValue now contains a base64 URI safe encoded string

$originalValue = $base64Encoder->decodeUri($safeValue);

装饰器

为了保持编码器小,特别提供了对象装饰器形式的功能。

装饰器在真正的编码器之上操作。

  • encodeUri()修改由装饰器编码器返回的值。
  • decodeUri()修改传递给装饰器编码器的值。

这些装饰器不能作为独立使用。

GZipCompressionDecorator

GZipCompressionDecorator(解)压缩URI数据。

注意: GZipCompressionDecorator创建了一个不安全的二进制结果,请确保原始编码器支持此功能。

use Rollerworks\Component\UriEncoder\Encoder as UriEncoder;

$stringEncode = 'This string is not safe, for direct usage & must encoded';

$base64Encoder = new UriEncoder\Base64UriEncoder();
$uriCompressor = new UriEncoder\GZipCompressionDecorator($base64Encoder);

$safeValue = $uriCompressor->encodeUri($stringEncode);
// $safeValue now contains a base64 encoded URI safe string, which internally contains the compressed result.

$originalValue = $uriCompressor->decodeUri($safeValue);

版本控制

为了透明度和对发布周期的洞察,以及为了努力维护向后兼容性,此软件包尽可能在语义版本控制指南下维护。

发布将按照以下格式编号

<主要>.<次要>.<修补程序>

并按照以下指南构建

  • 破坏向后兼容性会使主版本增加(并重置次要版本和修补程序)
  • 没有破坏向后兼容性的新功能会使次要版本增加(并重置修补程序)
  • 错误修复和杂项更改会使修补程序增加

有关SemVer的更多信息,请访问http://semver.org/

许可证

此库根据MIT许可证发布。

贡献

这是一个开源项目。如果您想做出贡献,请阅读贡献指南。如果您正在提交拉取请求,请遵循提交补丁部分的指南。