‌DELETE 请求中必须添加 CSRF Token 的完整示例

luby 学习笔记 2026-07-02 23:40 69 阅读

在传统网页中,删除操作通常通过表单提交实现。必须在表单内嵌入 CSRF Token。

DELETE 请求作为典型的“改数据”操作,必须进行 CSRF 防护。以下是具体实现示例:

<!-- 删除文章的表单 -->
<form action="/article/delete/123" method="POST">
    <!-- 关键:隐藏的 CSRF Token 字段 -->
    <input type="hidden" name="_method" value="DELETE"> <!-- 部分框架用此字段模拟 DELETE -->
    <input type="hidden" name="csrf_token" value="<?php echo $_SESSION['csrf_token']; ?>">
    
    <p>确定要删除这篇文章吗?</p>
    <button type="submit" onclick="return confirm('确认删除?')">删除</button>
</form>

后端验证逻辑(PHP示例):

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
   // 检查是否为删除操作
   if (isset($_POST['_method']) && strtoupper($_POST['_method']) === 'DELETE') {
       // 验证 CSRF Token
       if (!isset($_POST['csrf_token']) || $_POST['csrf_token'] !== $_SESSION['csrf_token']) {
           http_response_code(403);
           die('CSRF 验证失败');
       }
       
       // 执行删除逻辑
       $articleId = (int)$_GET['id'];
       // ... 删除数据库记录 ...
       
       echo '删除成功';
   }
}