rollerworks / uri-encoder
一个简单的库,用于安全地将字符串编码为URI使用。
Requires
- php: ^8.1
- symfony/polyfill-mbstring: ^1.28
Requires (Dev)
- ext-zlib: *
- phpunit/phpunit: ^10.4
- rollerscapes/standards: ^1.0
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许可证发布。