buzzingpixel/cookie-api

2.0.1 2019-03-27 01:30 UTC

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 获取许可证副本。

除非适用法律要求或书面同意,否则在许可证下分发的软件按“原样”基础分发,不提供任何明示或暗示的保证或条件。有关许可证的具体语言、权限和限制,请参阅许可证。