使用Settings API时,WordPress是否会转义数据以防止SQL注入?

时间:2017-12-04 16:55:15

标签: php mysql wordpress sql-injection

我很难找到有关此主题的任何信息。我正在创建一个允许用户添加自定义JS代码的插件,例如但不限于Google Analytics。为此,我使用Settings API创建了一个包含几个textarea字段的设置页面。我使用以下页面作为指南:https://developer.wordpress.org/plugins/settings/custom-settings-page/

我的问题是,我需要做些什么来确保进入数据库的数据是安全的?或者它已经安全(即通过WordPress转义)?我考虑在sanitize_textarea_field函数的回调中使用register_setting函数,但是,数据(例如<script src="example.com/script.js"></script)看起来完全相同,无论是否具有清理功能。由WordPress序列化。

如果我使用Settings API,我可以安全地假设WordPress会转义进入数据库的所有数据,或者我是否需要编写自定义代码来执行此操作?如果是这样,如果我使用设置API,那么转发数据的过程是什么?

1 个答案:

答案 0 :(得分:2)

是的,当你使用WP API时(不只是用于设置,而是其他功能,如update_post_metawp_insert_post等),WP将确保数据被正确转义之前它被发送到数据库。

少数例外会明确声明您可以输入SQL(例如posts_orderby filter)。

除非您的数据中包含不安全的字符(单引号!),否则在转义之前和之后都不会看到更改。请注意,sanitize_ *函数不处理SQL注入,但尝试清理内容。