Cannot verify nonce

时间:2017-05-30 作者:Vladimir Despotovic

我将nonce创建为

$nonce = wp_create_nonce("action");
然后将带有nonce的电子邮件发送给用户。在电子邮件中有指向页面的链接。在页面中,我以相同的方式形成nonce,并尝试使用

wp_verify_nonce($nonce, "action");
,它不工作,它总是无法验证,并返回false。我做错了什么?

1 个回复
最合适的回答,由SO网友:Mark Kaplun 整理而成

您所做的错误是在不打算使用nonce的上下文中使用nonce。对于登录的用户,应在网页上使用nonce,而不仅仅是一种随机的“它与安全性有关,所以必须是正确的”措施;)。

如果需要验证所发送链接的真实性,只需根据用户的长期“机密”信息使用md5哈希(或任何其他哈希生成器)。在最好的情况下,nonces“实时”48小时,而电子邮件可能会在之后打开。

结束

相关推荐

Nonces and Cache

很明显,表单提交和AJAX请求,尤其是合理的请求,需要“nonces”来避免某些攻击。然而,随着高速缓存系统的大量使用,很难生成它们并输出新的nonce而不是高速缓存的nonce。为了解决这个问题,我考虑创建一个AJAX函数,返回一个新的nonce,在提交表单之前进行请求。然后,此nonce将作为隐藏字段附加到表单中。你认为这是一种安全的方法吗?返回新nonce的PHP函数:function create_nonce() { return wp_create_nonce(\'my-nonc