orkhanshukurlu/php-csrf

保护您的网站免受机器人和不请自来的访客

1.0.0 2022-12-13 18:52 UTC

This package is auto-updated.

Last update: 2024-09-14 19:20:26 UTC


README

Minimum PHP Version Latest Stable Version Total Downloads License

PHP-CSRF 提供一系列功能,以帮助您保护网站免受 CSRF 攻击。使用这些功能,您不仅可以提高网站的安全性,还可以阻止机器人和不请自来的访客。

要求

  • PHP 7.3+

下载

composer require orkhanshukurlu/php-csrf

使用

在使用功能的文件中需要包含 vendor/autoload.php 文件。

require __DIR__ . '/vendor/autoload.php';

功能

csrf_field(string $name = '_token', int $length = 40) - 生成 CSRF 令牌输入

  • $name - 将生成的 input 的名称(即 name)。默认值为 _token
  • $length - 生成的令牌的字符数。默认值为 40 个字符

此函数应在 html 中的 form 元素内部使用。这样将生成一个 typehiddenname_tokenvalue 为 40 个字符的 input。使用方法如下:

<?php require __DIR__ . '/vendor/autoload.php'; ?>

<form action="#" method="POST">
    <?= csrf_field(); ?>
</form>

生成的 inputhtml 中将如下所示:

<input type="hidden" name="_token" value="a60e5c1048225b366c4d48c0f87e07ad2cad3583">

csrf_token(int $length = 40) - 生成 CSRF 令牌值

  • $length - 生成的令牌的字符数。默认值为 40 个字符

此函数生成一个 40 个字符的令牌。如果只需要令牌值,则可以使用此函数。使用方法如下:

<?php

require __DIR__ . '/vendor/autoload.php';

echo csrf_token();

生成的令牌将如下所示:

a60e5c1048225b366c4d48c0f87e07ad2cad3583

csrf_validate(array $request, string $name = '_token') - 验证 CSRF 令牌的有效性

  • $request - 用于验证令牌有效性的发送变量
  • $name - 将生成的 input 的名称(即 name)。默认值为 _token

此函数用于验证 form 中发送的令牌是否有效。如果发送的令牌值正确,则返回 true,否则返回 false。此函数需要一个参数,可以是 $_GET$_POST$_REQUEST 中的一个。使用方法如下:

<?php

require __DIR__ . '/vendor/autoload.php';

if (csrf_validate($_POST)) {
    // Token dəyəri düzgündür, heç bir xəta yoxdur
} else {
    // Token dəyəri düzgün deyil, xəta baş verdi
}

许可证

Laravel MSM 在 MIT 许可证 下发布

联系

Telegram: Orxan Şükürlü