# 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 表單的一個隱藏字段。