curl -s 'https://example.com/?p=903&preview=true' | findstr /i "post-password-form 报价单"
草稿设了访问密码,正常链接打开要求输入密码,把同一个 ID 加上 preview=true 参数后直接显示全文,密码框都没出现。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。
原因不复杂,预览请求在权限判断之前就把 post_password 的校验跳过了,只要拿到预览 nonce 就当有权限看。密码保护只在前台正文渲染时生效,覆盖不到预览分支。
围绕「草稿密码保护」排查时,命令行跑一遍比在面板里点十次有用,面板会替你做掉不少隐式操作。备份不是备了就行,恢复一次才算数,很多备份文件打开才发现是空的。
接口问题先分清是没发出去、发出去了没收到,还是收到了处理失败。
处理上按这个顺序:预览分支里补一次 post_password 校验,别直接读 post_content;预览 nonce 绑定用户 ID,别用可猜测的通用值;需要给外部看的稿子单独走一次性链接,别复用密码保护;改完用无痕窗口分别试正常链接和预览链接。
改完只确认一件事:预览链接也弹出密码框,输错密码拿不到正文。
