不,不是真的。您假设调用wp_insert_post()
已经执行了这些检查。但是wp_insert_post()
也可用于其他页面,而不仅仅是编辑页面、插件甚至主题(其中许多页面存在安全漏洞)。
这就是为什么您应该通过使用nonce来确保代码只在您想要的地方运行。
好的,我正在编辑答案,因为评论回复太长了。
如果插件公开wp\\u insert\\u post,不仅我的新自定义字段会被黑客攻击,而且所有的post字段都会被黑客攻击。(同样,这是插件中的错误)因此,我真的看不到验证我自己的自定义字段是否可以带来任何额外的安全性
但它会在你的代码的帮助下被“黑客”攻击。考虑一下主仪表板上的快速张贴表单。它没有为你的帖子元输入字段,是吗?提交时,wp_insert_post
-> save_post
被调用,如果$_POST
包含您的元字段(很容易编辑源代码并添加一些),它们将通过元框代码保存。本质上,如果不进行nonce检查,就可以更改WordPress中涉及后期编辑的任何形式的元字段,而不仅仅是附加自定义输入字段的形式。这就是你想要的吗?
我没有创建新操作,因此如果核心wordpress的代码允许在不验证nonce的情况下调用wp\\u insert\\u post,这就是wp中的一个bug。(如您所见,他们都在post.php中调用了check\\u admin\\u referer。
目的wp_insert_post
是插入帖子,而不是检查数据的来源。然而,我同意save_post
行动安排不当。此类函数不应触发操作和过滤器。相反,该操作应该由每个表单提交处理程序激发。除了此操作在WP API中引入更多的不一致性之外,它还促进了漏洞利用。。。