Phpcms通过Token验证、Referer检查、POST提交和SameSite Cookie组合防御CSRF,核心是生成随机Token并比对,结合多重措施提升安全性。

Phpcms 中防止 CSRF(跨站请求伪造)的核心在于使用 令牌验证机制,同时结合安全的开发实践来防御跨站请求攻击。虽然 Phpcms 早期版本对安全防护支持较弱,但通过手动增强或升级到更安全的架构,可以有效防范此类风险。
在表单中加入一次性令牌(Token),是防御 CSRF 最基本且有效的方式。
- 在生成表单时,后端生成一个随机 token,保存在 session 中,并作为隐藏字段插入表单:zuojiankuohaophpcninput type="hidden" name="csrf_token" value="<?php echo $_SESSION['csrf_token']; ?>">
- 提交表单时,服务器端先比对提交的 token 与 session 中的值是否一致,不一致则拒绝请求。示例代码:
立即学习“PHP免费学习笔记(深入)”;
<?php
session_start();
if ($_POST) {
if (!isset($_POST['csrf_token']) || $_POST['csrf_token'] !== $_SESSION['csrf_token']) {
die('非法请求');
}
// 处理正常逻辑
}
// 生成新 token
$_SESSION['csrf_token'] = bin2hex(random_bytes(16));
?>
检查请求来源是否为本站,可初步判断是否为跨站伪造请求。
- 在关键操作接口中增加 referer 校验:
<?php
$referer = $_SERVER['HTTP_REFERER'] ?? '';
if (strpos($referer, 'https://yourdomain.com') !== 0) {
die('请求来源非法');
}
?>
避免使用 GET 请求执行敏感操作(如删除、修改配置等)。所有数据修改必须通过 POST 提交,并携带有效 token。
- 将删除、编辑等链接改为表单提交方式 - 禁止直接通过 URL 触发重要操作例如:删除文章应使用 POST 方法提交包含 ID 和 token 的表单,而不是 <a href="/delete?id=1"> 删除 </a>
在 PHP 中设置 Cookie 时,启用 SameSite 属性可减少浏览器自动携带 Cookie 的场景。
session_set_cookie_params(['samesite' => 'Strict']);
- Strict:完全禁止跨站携带 Cookie - Lax:允许部分安全的 GET 导航携带(推荐平衡体验与安全)基本上就这些。Phpcms 原生防护较弱,重点靠开发者手动补足。只要做到 关键操作用 POST + Token 校验 + Referer 初步过滤 + SameSite Cookie,就能有效抵御大多数 CSRF 攻击。安全无小事,尤其老系统更要主动加固。
以上就是phpcmsCSRF怎么防?跨站请求如何防护验证?的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号