一个简单的PHP CSRF类,提供操作CSRF令牌的功能。

1.0.0 2023-06-18 07:13 UTC

This package is auto-updated.

Last update: 2024-09-18 10:12:10 UTC


README

License: MIT PHP Version Release

一个简单的PHP CSRF类,提供操作CSRF令牌的功能。

安装

您可以使用Composer安装Csrf类。在您的项目根目录中运行以下命令

composer require gokhankurtulus/csrf

用法

要在您的PHP脚本中使用Csrf类,您需要包含Composer自动加载器

require_once 'vendor/autoload.php';

创建新令牌

您可以使用newToken方法生成新的CSRF令牌。该方法接受两个参数:令牌名称和可选的过期时间(以秒为单位,默认为600秒=10分钟)。

use Csrf\Csrf;

$token = Csrf::newToken('my_token', 1200); // Generate a token named 'my_token' that expires in 20 minutes

newToken方法返回一个包含令牌信息的stdClass对象。该对象具有以下属性

  • name:令牌的名称。
  • expiry:令牌的过期时间戳。
  • value:令牌值。

获取令牌

要检索先前生成的令牌,您可以使用getToken方法。它接受令牌名称作为参数,如果找到令牌则返回令牌对象,如果没有找到则返回null

$token = Csrf::getToken('my_token'); // Get the token object for 'my_token'

创建HTML输入字段

createInput方法生成一个包含CSRF令牌的HTML输入字段。它接受令牌名称和可选的过期时间(默认为600秒或10分钟)作为参数。该方法返回HTML输入字段作为字符串,或者在会话未启动或令牌名称为空时返回null

$input = Csrf::createInput('my_token', 1800); // Generate an HTML input field for 'my_token' that expires in 30 minutes
echo $input; // Output the HTML input field

生成的HTML输入字段可用于表单中,以发送CSRF令牌值和其他表单数据。

验证令牌

要验证提交的令牌是否有效,您可以使用verify方法。它接受令牌名称、可选的参数以在验证令牌后取消设置令牌(默认为false),以及与请求一起提交的令牌值(默认情况下可从$_POST超级全局变量中获取)。

$isVerified = Csrf::verify('my_token', true); // Verify the submitted token for 'my_token' and unset it if verified
if ($isVerified) {
    // Token is valid
} else {
    // Token is invalid
}

verify方法返回一个布尔值,指示令牌是否有效。

取消设置令牌

要手动取消设置令牌,您可以使用unsetToken方法。它接受令牌名称作为参数,如果成功取消设置则返回true,如果会话未启动或令牌名称为空则返回false

Csrf::unsetToken('my_token'); // Unset the token named 'my_token'

会话状态

Csrf类依赖于PHP会话来存储和检索CSRF令牌。可以使用isSessionStarted方法来检查会话是否已启动。

$isSessionStarted = Csrf::isSessionStarted(); 

// Check if a session is started
if ($isSessionStarted) {
    // Session is active
} else {
    // Session is not active
}

许可证

Csrf是开源软件,在MIT许可证下发布。您可以在您的项目中修改和使用它。

贡献

欢迎对Csrf的贡献!如果您发现任何问题或对改进有建议,请在GitHub仓库上创建问题或提交拉取请求。