Answers:
这是一个修改后的检查表,基于我当前用于审阅主题的(正在进行的)设置/数据安全检查表(插件的原理应与主题相同)。
插件应在所有选项,自定义函数,自定义变量和自定义常量之前加上plugin-slug。
插件应故意实现“插件选项”和“插件设置”页面,而不是依靠网站教程中的复制和粘贴脚本(例如以下脚本),这些脚本已过时,并且不包括适当的数据安全性:
插件应使用该add_options_page()
功能将“插件设置页面”添加到Settings
菜单,而不是add_menu_page()
用于添加顶级菜单。
插件应使用适当的功能(例如manage_options
)来添加设置页面的功能。
插件应将选项保存在单个数组中,而不是为设置页面创建多个选项。使用设置API(请参见下文)可以解决此问题。
插件应使用Settings API(请参阅下文)来获取和保存表单输入数据,而不是直接依赖$_POST
和$_REQUEST
数据。
对于复选框和选择选项,插件应分别使用checked()
和selected()
函数来输出checked="checked"
和selected="selected"
。
在将数据输入数据库之前,插件应验证和清除所有不受信任的数据,并且应在设置表单字段中输出和在主题模板文件中输出之前,对所有不受信任的数据进行转义:
插件esc_attr()
应用于文本输入,esc_html()
(或esc_textarea()
在WP 3.1中)应用于文本区域。
如果不使用Settings API,则插件应显式提供Settings-page nonce检查:
还强烈建议插件使用设置API,该API更易于使用,更安全,并且可以处理很多设置页面的工作:
有关使用Settings API的良好教程,请参见:
http://www.chipbennett.net/2011/02/17/incorporating-the-settings-api-in-wordpress-themes/
http://planetozh.com/blog/2009/05/handling-plugins-options-in-wordpress-28-with-register_setting/
如果要使用安全且经过严格编码的主题设置页面检出主题,请检出此主题:http :
//wordpress.org/extend/themes/coraline