CSRF 保护

最后更新于:2022-04-01 22:34:22

# CSRF 保护 [Edit This Page](https://github.com/slimphp/Slim-Website/tree/gh-pages/docs/features/csrf.md) Slim 3 使用独立可选的 PHP 组件 [slimphp/Slim-Csrf](https://github.com/slimphp/Slim-Csrf) 来保护应用程序免遭 CSRF(跨站请求伪造)。本组件为每个请求生成一个唯一 token ,验证来源于客户端 HTML 表单产生的 POST 请求。 ## 安装 在你的项目的根目录下执行这个bash命令: ``` composer require slim/csrf ``` ## 用法 这个 `slimphp/Slim-Csrf` 组件包含一个应用程序中间件。像这样将它添加到你的应用程序中: ``` // Add middleware to the application $app = new \Slim\App; $app->add(new \Slim\Csrf\Guard); // Create your application routes... // Run application $app->run(); ``` ## 提取 CSRF token 的名称和值 最新的 CSRF token 作为 PSR7 请求对象的属性,其名称和值是可获取的。每个请求的CSRF token 都是唯一的。你可以像这样提取当前的 CSRF token 的名称和值: ``` $app->get('/foo', function ($req, $res, $args) { // Fetch CSRF token name and value $name = $req->getAttribute('csrf_name'); $value = $req->getAttribute('csrf_value'); // TODO: Render template with HTML form and CSRF token hidden field }); ``` 你应该将 CSRF token 的名称和值船体给模板,这样它们就能和 HTML 表单 POST 请求一起被提交。它们经常被存储为 HTML 表单的一个隐藏字段。
';