buzzingpixel / cookie-api
Cookie API
Requires
- php: >=7.2
- ext-json: *
- ext-sodium: *
- buzzingpixel/corbomite-di: ^1.0
Requires (Dev)
- codedungeon/phpunit-result-printer: ^0.26.1
- phpmd/phpmd: ^2.6
- phpunit/phpunit: ^7.5
- roave/security-advisories: dev-master
- squizlabs/php_codesniffer: ^3.4
- twig/twig: ^2.6
This package is auto-updated.
Last update: 2024-08-27 13:13:22 UTC
README
提供易于使用的API和实体,用于在PHP中处理cookie。
它还可以执行诸如加密cookie内容等操作。虽然你通常不应该将需要保密的内容放入cookie中,但总有一些攻击向量可能会被利用,而加密cookie内容可以缩小攻击向量。例如,如果将数据库行的主键存储在cookie中[你可能不应该这样做,但每个人都这样做过],然后很容易增加或减少该数字,并伪造一个cookie以提供访问权限,用户可能没有权限访问。
通过使用 libsodium 加密,它确保cookie值不会被篡改。
用法
ENCRYPTION_KEY 环境变量
您必须设置一个名为 ENCRYPTION_KEY
的环境变量,且长度必须恰好为32个字符。此密钥应始终保持机密状态。这是密钥,永远不应向公众透露,否则您的加密数据可以被任何人读取。
创建cookie实体
<?php declare(strict_types=1); use corbomite\di\Di; use buzzingpixel\cookieapi\CookieApi; /** @var CookieApi $cookieApi */ $cookieApi = Di::get('CookieApi'); // Make a cookie entity (same as new \buzzingpixel\cookieapi\Cookie) but more testable as method call $cookie = $cookieApi->makeCookie('MyCookie', 'MyValue');
请注意,cookie实体是不可变的。因此,为了获取一个具有更改值的新cookie实体,请使用 $newCookie = $cookie->withPropName($val)
方法。
$newCookie = $cookie->withValue('myNewValue');
makeCookie()
或 Cookie::__construct()
参数
$name
类型:string
。必需。cookie的名称。
$value
类型:string
。必需。cookie的值。
$expire
类型:DateTimeInterface
类。可选。默认为20年后的日期。
$path
类型:string
。可选。默认为 /
cookie路径。
$domain
类型:string
。可选。默认为空。cookie的域。
$secure
类型:boolean
。可选。默认为 false
。
$httpOnly
类型:boolean
。可选。默认为 true
。
检索cookie
<?php declare(strict_types=1); use corbomite\di\Di; use buzzingpixel\cookieapi\CookieApi; /** @var CookieApi $cookieApi */ $cookieApi = Di::get('CookieApi'); // Get a cookie by its name. Returns a `\buzzingpixel\cookieapi\Cookie` entity or null if no cookie by that name is set $cookie = $cookieApi->retrieveCookie('MyCookie');
保存cookie
<?php declare(strict_types=1); use corbomite\di\Di; use buzzingpixel\cookieapi\CookieApi; /** @var CookieApi $cookieApi */ $cookieApi = Di::get('CookieApi'); $cookie = $cookieApi->makeCookie('MyCookie', 'MyValue'); $cookieApi->saveCookie($cookie);
删除cookie
<?php declare(strict_types=1); use corbomite\di\Di; use buzzingpixel\cookieapi\CookieApi; /** @var CookieApi $cookieApi */ $cookieApi = Di::get('CookieApi'); // Delete a cookie by passing the cookie entity to be deleted $cookie = $cookieApi->retrieveCookie('MyCookie'); $cookieApi->deleteCookie($cookie); // Delete a cookie by name $cookieApi->deleteCookieByName('MyCookie');
许可证
版权所有 2019 BuzzingPixel, LLC
根据Apache License,版本2.0(“许可证”)许可;除非适用法律要求或书面同意,否则不得使用此文件,除非遵守许可证。您可以在 https://apache.ac.cn/licenses/LICENSE-2.0 获取许可证副本。
除非适用法律要求或书面同意,否则在许可证下分发的软件按“原样”基础分发,不提供任何明示或暗示的保证或条件。有关许可证的具体语言、权限和限制,请参阅许可证。