【发布时间】:2018-06-09 19:15:32
【问题描述】:
我的 WordPress 站点 (4.9.1) 中有一个表单,其中包含一个 nonce 字段(使用 wp_nonce_field())并发布到 admin-post.php。
我以一种非常简单的方式使用它...:
<?php wp_nonce_field( $action, 'referer' ); ?>
...生成类似这样的内容:
<input type="hidden" id="referer" name="referer" value="d6dd8e58dd" />
<input type="hidden" name="_wp_http_referer" value="/slug/?laorder=99371&laid=92bbfca59e41a4938ce8c0751cfcd0c4a68e75c14bd94b981505cc037079280&lauser=myemail%domain.com" />
问题在于验证:
if (! isset( $_POST['referer'] ) || ! wp_verify_nonce( $_POST['referer'], $action ) )
在某些(未知)情况下会失败:在隐身模式下发布时似乎总是可以正常工作,并且对于使用不同浏览器(chrome、firefox 或 safari)的某些用户来说随机失败。
所有用户都是客人。
有人知道为什么会发生这种随机行为吗?
【问题讨论】: