在传统网页中,删除操作通常通过表单提交实现。必须在表单内嵌入 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 '删除成功';
}
}