首页 > CMS教程 > PHPCMS > 正文

phpcmsCSRF怎么防?跨站请求如何防护验证?

月夜之吻
发布: 2025-10-20 16:23:01
原创
379人浏览过
Phpcms通过Token验证、Referer检查、POST提交和SameSite Cookie组合防御CSRF,核心是生成随机Token并比对,结合多重措施提升安全性。

phpcmscsrf怎么防?跨站请求如何防护验证?

Phpcms 中防止 CSRF(跨站请求伪造)的核心在于使用 令牌验证机制,同时结合安全的开发实践来防御跨站请求攻击。虽然 Phpcms 早期版本对安全防护支持较弱,但通过手动增强或升级到更安全的架构,可以有效防范此类风险。

1. 使用 Token 防止 CSRF 提交

在表单中加入一次性令牌(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));
?>

2. 验证 HTTP Referer 头

检查请求来源是否为本站,可初步判断是否为跨站伪造请求。

PatentPal专利申请写作
PatentPal专利申请写作

AI软件来为专利申请自动生成内容

PatentPal专利申请写作 13
查看详情 PatentPal专利申请写作
- 在关键操作接口中增加 referer 校验:

<?php
$referer = $_SERVER['HTTP_REFERER'] ?? '';
if (strpos($referer, 'https://yourdomain.com') !== 0) {
    die('请求来源非法');
}
?>

注意:Referer 可能被客户端屏蔽或篡改,不能单独依赖,需配合 Token 使用。

3. 关键操作使用 POST + Token 双重验证

避免使用 GET 请求执行敏感操作(如删除、修改配置等)。所有数据修改必须通过 POST 提交,并携带有效 token。

- 将删除、编辑等链接改为表单提交方式 - 禁止直接通过 URL 触发重要操作

例如:删除文章应使用 POST 方法提交包含 ID 和 token 的表单,而不是 <a href="/delete?id=1"> 删除 </a>

4. 设置 SameSite Cookie 属性

在 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在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号