全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

PHP防止跨站请求伪造方法_PHP CSRF保护使用说明

PHP防CSRF核心是生成并校验一次性令牌:通过session_start()开启会话,用bin2hex(random_bytes(32))生成Token存入$_SESSION['csrf_token']并嵌入表单隐藏域;提交时用hash_equals()比对$_POST['token']与Session中值,校验后建议刷新Token;Token应绑定用户ID/IP片段、避免URL传递,并配合POST操作、SameSite Cookie及AJAX头校验等措施。

PHP防止跨站请求伪造(CSRF)的核心是为每个敏感操作生成并校验一次性令牌(Token),确保请求来自用户本人的合法页面,而非第三方伪造的表单或链接。

生成并嵌入CSRF Token

在显示表单的PHP页面中,生成随机、不可预测的Token,并存入用户Session,同时作为隐藏字段写入表单:

  • 使用session_start()开启会话(必须在输出前调用)
  • 生成Token建议用bin2hex(random_bytes(32)),避免可预测性
  • 将Token存入$_SESSION['csrf_token'],并在表单中添加:

提交时严格校验Token

处理表单提交(如POST请求)时,必须比对客户端传入的Token与Session中存储的值:

  • 检查$_POST['token']是否存在且非空
  • hash_equals()进行安全比对(防止时序攻击),例如:
    if (!hash_equals($_SESSION['csrf_token'], $_POST['token'])) { die('Invalid CSRF token'); }
  • 校验通过后,立即刷新Token(可选但推荐):重新生成并覆盖$_SESSION['csrf_token']

合理设置Token作用域和生命周期

Token不是一劳永逸,需结合业务控制其有效范围:

  • 敏感操作(如修改密码、转账)应使用独立Token,不与其他页面共用
  • Token可绑定当前用户ID和IP片段(如sha1($user_id . substr($_SERVER['REMOTE_ADDR'], 0, 7))),增加伪造难度
  • Session过期或用户登出时,务必清空$_SESSION['csrf_token']
  • 避免在URL中传递Token(易被日志、Referer泄露)

配合其他基础防护更稳妥

CSRF防护不能单靠Token,需叠加常规安全措施:

  • 敏感操作统一走POST,禁用GET执行状态变更(如/delete?id=123
  • 设置SameSite=LaxStrict的Cookie属性(PHP 7.3+ 可用session_set_cookie_params(['samesite' => 'Lax'])
  • 对AJAX请求,在请求头中携带Token(如X-CSRF-Token),后端从$_SERVER['HTTP_X_CSRF_TOKEN']读取校验

基本上就这些。关键不是代码多复杂,而是每次状态变更都强制走Token校验,不跳过、不硬编码、不复用旧Token。


# php  # ajax  # cookie  # 编码  # session  # 后端  # 作用域  # 表单提交  # csrf  # if 


相关文章: 七夕网站制作视频,七夕大促活动怎么报名?  网站制作的方法有哪些,如何将自己制作的网站发布到网上?  如何用5美元大硬盘VPS安全高效搭建个人网站?  商务网站制作工程师,从哪几个方面把握电子商务网站主页和页面的特色设计?  网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?  佛山企业网站制作公司有哪些,沟通100网上服务官网?  如何零基础在云服务器搭建WordPress站点?  济南专业网站制作公司,济南信息工程学校怎么样?  建站之星下载版如何获取与安装?  建站之星备案是否影响网站上线时间?  如何在阿里云香港服务器快速搭建网站?  制作网站的网址是什么,请问后缀为.com和.com.cn还有.cn的这三种网站是分别是什么类型的网站?  东莞专业制作网站的公司,东莞大学生网的网址是什么?  如何在Golang中使用encoding/gob序列化对象_存储和传输数据  巅云智能建站系统:可视化拖拽+多端适配+免费模板一键生成  c# 在高并发场景下,委托和接口调用的性能对比  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  宿州网站制作公司兴策,安徽省低保查询网站?  Android滚轮选择时间控件使用详解  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  高防服务器租用指南:配置选择与快速部署攻略  在线教育网站制作平台,山西立德教育官网?  ppt制作免费网站有哪些,ppt模板免费下载网站?  c++ stringstream用法详解_c++字符串与数字转换利器  建站之星如何助力网站排名飙升?揭秘高效技巧  建站主机如何安装配置?新手必看操作指南  PHP 500报错的快速解决方法  湖北网站制作公司有哪些,湖北清能集团官网?  武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?  浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样?  建站主机助手选型指南:2025年热门推荐与高效部署技巧  如何在局域网内绑定自建网站域名?  魔毅自助建站系统:模板定制与SEO优化一键生成指南  如何在宝塔面板中创建新站点?  如何快速搭建个人网站并优化SEO?  c++23 std::expected怎么用 c++优雅处理函数错误返回【详解】  建站之星伪静态规则如何正确配置?  在线制作视频网站免费,都有哪些好的动漫网站?  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  制作网站的基本流程,设计网站的软件是什么?  存储型VPS适合搭建中小型网站吗?  义乌企业网站制作公司,请问义乌比较好的批发小商品的网站是什么?  如何高效搭建专业期货交易平台网站?  如何制作网站标识牌,动态网站如何制作(教程)?  建站之星如何优化SEO以实现高效排名?  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  建站中国必看指南:CMS建站系统+手机网站搭建核心技巧解析  建站主机选哪种环境更利于SEO优化?  制作网站的过程怎么写,用凡科建站如何制作自己的网站?  个人网站制作流程图片大全,个人网站如何注销? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。