WordPress文件存储在哪里?


Where Are WordPress nonces Stored?

我试图找出WordPress在哪里存储所有的nonce。但没能找到任何线索。我首先检查了数据库,但没有找到任何名为wp_nces之类的表。

我在11个月前发布了这个问题。

我收到的所有答案都很棒,对我帮助很大。

但是它们都没有解决WordPress文件的存储位置。这才是我真正想问的。

所以,我挖出了WordPress源代码,并能够找到WordPress随机数的正确存储位置。

存储在用户会话中。

它们是存储在用户会话中的唯一令牌。nonce有一个定义的寿命。

如果用户退出WordPress,那么nonce将不再有效。

PS:我问了这个问题,现在我把这个答案贴出来帮助别人:)

nonce不直接存储在任何地方,它们是使用函数wp_create_nonce创建的,并使用wp_verify_nonce进行验证。

这些函数依次使用wp_hash来散列生命周期,自定义字符串,user_id和会话令牌存储在wp_usermeta中,密钥为session_tokens

nonce是由WordPress生成的一次性令牌,用于验证各种请求,例如添加评论,删除帖子,删除用户等。

它们没有存储在任何地方,也不需要存储在任何地方。

看下面的例子;在WordPress中管理内容时,Bin链接可能看起来像这样:

http://www.example.com/wp-admin/post.php?post=1337&action=trash&_wpnonce=369f188682

但是,如果您尝试将URL中的页面/帖子的ID更改为其他内容(参见下面的),则nonce将不再有效,返回403错误,并显示:"Are you sure you want to do this?"

http://www.example.com/wp-admin/post.php?post=9100&action=trash&_wpnonce=369f188682

在WordPress中实现表单时,添加隐藏的_nonce字段(以Contact Form 7为主要示例)通常是很好的实践,因为它可以防止跨站点请求伪造(CSRF)等。

资源:

  • WordPress目前
  • Nonce
  • 跨站点请求伪造