gokhankurtulus / csrf
一个简单的PHP CSRF类,提供操作CSRF令牌的功能。
Requires
- php: ^7.1 || ^8.0
README
一个简单的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仓库上创建问题或提交拉取请求。