后台 CSRF 与敏感操作加固
xiaobai 18小时前

2026-06-06 后台 CSRF 与敏感操作加固

本次对后台管理区增加全局 CSRF 防护,并对仍使用 GET 的敏感操作补充 token 校验。

主要改动:

  1. 后台全局 POST CSRF 校验
  • 文件:admin/admin.func.php
  • 新增 admin_csrf_token()admin_csrf_check_token()admin_csrf_url()admin_csrf_check()
  • CSRF Token 保存在后台管理员当前 Session 中。
  • Token 使用 random_bytes() 生成;低版本环境回退到基于站点密钥、时间和随机数的生成方式。
  • 文件:admin/index.inc.php
  • 后台入口在管理员 token 校验后,对所有后台 POST 请求统一校验 CSRF Token。
  • 后台登录 index-login 保持放行,避免未登录状态无法提交登录表单。
  1. 后台表单和 AJAX 自动携带 CSRF Token
  • 文件:admin/view/htm/footer.inc.htm
  • 后台页面输出 admin_csrf_token JS 变量。
  • 自动为所有后台 method="post" 表单添加隐藏字段 admin_csrf_token
  • 包装后台页面中的 $.xpost(),自动给字符串、对象、空参数 POST 请求附加 admin_csrf_token
  1. GET 敏感操作加固
  • 文件:admin/route/plugin.php
  • 插件 downloadinstallunstallenabledisableupgrade 操作增加 admin_csrf_check_token()
  • 文件:admin/route/forum.php
  • 版块删除操作增加 admin_csrf_check_token()
  • 文件:admin/route/index.php
  • 后台退出登录增加 admin_csrf_check_token()
  1. 后台敏感链接补充 CSRF 参数
  • 文件:admin/view/htm/plugin_list.htm
  • 文件:admin/view/htm/plugin_read.htm
  • 文件:admin/view/htm/header_nav.inc.htm
  • 插件下载、安装、卸载、启用、禁用、升级,以及后台退出链接统一使用 admin_csrf_url()
  • 插件购买成功后的自动跳转下载也会附加 CSRF Token。

影响说明:

  • 后台页面内正常表单提交和 AJAX 操作不需要逐个改业务代码。
  • 第三方插件后台页面如果复用后台公共 footer,POST 请求会自动携带 CSRF Token。
  • 外部站点伪造后台 POST 或 GET 敏感操作时,因为无法获取当前管理员 Session 中的 token,会被拒绝。
  • 不影响新安装流程,无需数据库结构变更。

欢迎大家加入QQ交流群:785017513

最新回复 (0)
全部楼主
返回
xiaobai
二级用户组
27
主题数
4
帖子数
扫码访问