我将nonce创建为
$nonce = wp_create_nonce("action");
然后将带有nonce的电子邮件发送给用户。在电子邮件中有指向页面的链接。在页面中,我以相同的方式形成nonce,并尝试使用
wp_verify_nonce($nonce, "action");
,它不工作,它总是无法验证,并返回false。我做错了什么?
最合适的回答,由SO网友:Mark Kaplun 整理而成
您所做的错误是在不打算使用nonce的上下文中使用nonce。对于登录的用户,应在网页上使用nonce,而不仅仅是一种随机的“它与安全性有关,所以必须是正确的”措施;)。
如果需要验证所发送链接的真实性,只需根据用户的长期“机密”信息使用md5哈希(或任何其他哈希生成器)。在最好的情况下,nonces“实时”48小时,而电子邮件可能会在之后打开。