wp_insert_posts()的安全性/安全性如何?


13

查看wp_insert_post()的Codex,它指出该函数“ ...清理变量,进行一些检查,填写缺少的变量,如日期/时间等。”(编辑:我更新了Codex条目以包含一个更强大的示例其中包括安全性以及发布元和类别分配)

只是想知道我是否需要进行进一步的清理以防止XSS骇客之类的东西,或者是否通过该功能做了足够的工作。

老实说,我检查了核心函数,例如在post_content上未找到任何wp_kses()或其他清理方法,因此我有点担心。我所看到的只是数据上的stripslashes_deep()。

因此,当我为wp_insert_post()构建参数时,我应该运行wp_kses()还是其他任何东西?

最佳做法是什么?在其示例中,食品法典委员会对安全性相当谨慎。

谢谢


2
它仅防止SQL注入。如果要对内容运行kses,则必须自己执行。WP无法猜测要删除的HTML。如果帖子是由管理员提交的,并且他想在其中插入<script>内容怎么办?
onetrickpony

好的,很高兴知道。然后在所有内容上输入wp_kses_post(),在标题上输入wp_kses_title()!
汤姆·奥格

更新了Codex,以显示数据验证和wp_insert_posts()的示例。
Tom Auger

Answers:


11

您不必做任何事情。

在WP负载下:

'init' hook -> kses_init() -> kses_init_filters()

后来:

wp_insert_post() -> sanitize_post() -> sanitize_post_field() -> 'content_save_pre' -> wp_filter_post_kses()

帖子标题,评论文本等也是如此。

结论:wp_insert_post()非常干净。:)


感谢Scribu所做的更正-绝对是更好的方法!尽管我希望您没有废弃整个代码片段,因为这也是使用wp_insert_post()的其他方面(主要示例未涵盖)的很好说明。
汤姆·奥格

是的,对此也感到不好。但是,这超出了wp_insert_post()的范围。我认为,另外一个自上而下的教程会更好。
scribu

还更新了答案和法典。
scribu

大声笑@最新编辑。有时需要一些挖掘才能找到已经埋在内核中的所有黄金:)当我追踪线程时,我丢失了线程。看来您比我更好!感谢您坚持这样做,并更新了法典。
Tom Auger
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.