From 4c2e07566725a92655144c1a36372950ff365852 Mon Sep 17 00:00:00 2001 From: ypsdf1 Date: Wed, 30 Sep 2026 13:30:48 +0800 Subject: [PATCH] =?UTF-8?q?=E9=85=8D=E7=BD=AE=E9=A1=B5=E9=98=B2=E5=9B=9E?= =?UTF-8?q?=E8=BD=A6=E8=AF=AF=E8=A7=A6=E4=BF=AE=E5=A4=8D=EF=BC=9A=E5=9B=9E?= =?UTF-8?q?=E8=BD=A6=E4=B8=8D=E5=86=8D=E5=91=BD=E4=B8=AD=E9=A6=96=E4=B8=AA?= =?UTF-8?q?=E6=8F=90=E4=BA=A4=E6=8C=89=E9=92=AE=E3=80=8C=E9=87=8D=E6=96=B0?= =?UTF-8?q?=E7=94=9F=E6=88=90=E4=BB=A4=E7=89=8C=E3=80=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- admin_2fa_setup.php | 41 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/admin_2fa_setup.php b/admin_2fa_setup.php index 48a8c37..ce3ea83 100644 --- a/admin_2fa_setup.php +++ b/admin_2fa_setup.php @@ -160,6 +160,13 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && $mode !== 'none') { secLog('twofa_enabled', ''); $ok = '✅ 二次验证已启用!之后每次登录后台都必须输入 6 位动态码(当前会话也需重新验证)'; } elseif ($act === 'rotate_token') { + // ★ 防误触兜底(2026-09-30 事故):本操作曾是表单第一个 submit 按钮, + // 任何文本框按回车都会隐式提交命中它。现在只有点了「重新生成令牌」 + // 按钮并确认对话框(rotate_confirm=1)才执行;回车等路径一律拒绝。 + if (!isset($_POST['rotate_confirm']) || (string)$_POST['rotate_confirm'] !== '1') { + secLog('token_rotate_denied', '缺少显式确认标记(疑似回车隐式提交),已拒绝'); + throw new Exception('已拦截一次非按钮发起的令牌重置(防误触)。请点「重新生成令牌」按钮并在确认框中点确定。'); + } // ★ 需求:重置访问密钥不得关闭二次验证。 // 1) 写前先拍一张 SEC-UPDATE 区快照; // 2) 最小写入 —— 本次只提交"两个令牌键",绝不再走 $full() 把内存里的 @@ -291,8 +298,9 @@ if (file_exists($secLogPath)) { ❌ ✅ -
+ +
@@ -318,7 +326,7 @@ if (file_exists($secLogPath)) {
🔖 后台唯一入口(请收藏这一条,不带 token 访问 admin.php 一律返回 404):
-
+
恢复访问地址:
@@ -2719,6 +2727,35 @@ var qrcode = function() {