PSR7Csrf 开源项目教程
1、项目介绍
PSR7Csrf 是一个基于 PSR-7 标准的无存储 CSRF 令牌生成和验证中间件。它旨在为使用 PSR-7 兼容应用程序提供跨站请求伪造(CSRF)保护。该项目由 Ocramius 开发,遵循 MIT 许可证。
2、项目快速启动
安装
首先,通过 Composer 安装 PSR7Csrf:
composer require ocramius/psr7-csrf
使用
以下是一个简单的使用示例,假设你有一个配置好的 PSR-7 兼容应用程序,并且支持中间件管道:
<?php
require __DIR__ . '/vendor/autoload.php';
use Zend\Expressive\AppFactory;
use PSR7Session\Http\SessionMiddleware;
use PSR7Csrf\Factory;
$app = AppFactory::create();
// 设置会话中间件
$app->pipe(SessionMiddleware::fromSymmetricKeyDefaults(
'mBC5v1sOKVvbdEitdSBenu59nfNfhwkedkJVNabosTw=', // 替换为你的密钥
1200 // 20分钟会话持续时间
));
// 设置 CSRF 检查中间件
$app->pipe(Factory::createDefaultCSRFCheckerMiddleware());
// 其他应用程序逻辑
$app->pipe(/* 其他中间件 */);
$app->run();
3、应用案例和最佳实践
应用案例
PSR7Csrf 可以用于任何支持 PSR-7 和中间件管道的框架,如 Zend Expressive、Slim 等。以下是一个在 Zend Expressive 中的完整应用案例:
<?php
require __DIR__ . '/vendor/autoload.php';
use Zend\Expressive\AppFactory;
use PSR7Session\Http\SessionMiddleware;
use PSR7Csrf\Factory;
$app = AppFactory::create();
// 设置会话中间件
$app->pipe(SessionMiddleware::fromSymmetricKeyDefaults(
'mBC5v1sOKVvbdEitdSBenu59nfNfhwkedkJVNabosTw=', // 替换为你的密钥
1200 // 20分钟会话持续时间
));
// 设置 CSRF 检查中间件
$app->pipe(Factory::createDefaultCSRFCheckerMiddleware());
// 定义路由和处理程序
$app->get('/', function ($request, $response, $next) {
$response->getBody()->write('Hello, world!');
return $response;
});
$app->post('/submit', function ($request, $response, $next) {
// 处理表单提交
$params = $request->getParsedBody();
// 处理逻辑
$response->getBody()->write('Form submitted successfully!');
return $response;
});
$app->run();
最佳实践
- 密钥管理:确保你的密钥安全且定期更换。
- 会话持续时间:根据应用需求设置合理的会话持续时间。
- 错误处理:为 CSRF 验证失败的情况添加适当的错误处理逻辑。
4、典型生态项目
PSR7Csrf 可以与其他 PSR-7 兼容的中间件和库结合使用,例如:
- PSR7Session:用于会话管理。
- Zend Expressive:一个灵活的 PSR-7 兼容框架。
- Slim Framework:另一个流行的 PSR-7 兼容微框架。
通过这些项目的结合使用,可以构建出安全、高效的 Web 应用程序。