我应该在联系人表单上使用wp_nonce_field吗?

时间:2014-10-06 作者:Dejo Dekic

我已经创建了一个自我提交的联系人表单模板,它工作得很好,但是当我浏览网页搜索教程(用于创建联系人表单)时,我注意到一些人在表单中使用了wp\\u nounce\\u field,但根据Konstantin Kovshenin 这是个坏主意。

那么,我是否应该在我的联系人表单上使用wp\\u nonce\\u字段?

谢谢

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

你不应该这样。Nonce用于防止跨站点请求伪造攻击(CSRF) 在这种情况下,另一个aite试图欺骗你向你的网站提交一个表单,这将执行一些恶意操作。

nonce是唯一的值,只能由特定站点在特定时间生成,因此攻击站点无法猜测。您要做的是生成一个nonce,并在为其生成HTML时将其添加到表单中,并在尝试处理它之前,验证它实际上是由您的站点在合理的时间范围内生成的。

由于联系人表单除了在DB中存储信息或发送邮件外,不应该做任何其他事情,因此没有必要再保护他们免受CSRF的影响。99%的情况下,它不会为用户提供任何参考,但正如konstantin指出的那样,如果缓存被某个缓存插件或某个您无法控制的缓存服务器(大多数ISP可能有一个)使用,您可能会向用户提供一个过时的nonce,这将导致验证失败,并阻止用户提交表单。

结束

相关推荐

Nonces and Cache

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