As suggested in this question, 我将此主题作为一个新问题添加进来,供社区讨论/投票关于插件/主题安全的最佳实践。
这是基于我当前(正在进行的工作)设置/用于审查主题的数据安全检查表的开始检查表(插件的原则应与主题的原则相同)。
如果要签出具有安全且可靠编码的主题设置页面的主题,请签出此主题:
http://wordpress.org/extend/themes/coraline
As suggested in this question, 我将此主题作为一个新问题添加进来,供社区讨论/投票关于插件/主题安全的最佳实践。
这是基于我当前(正在进行的工作)设置/用于审查主题的数据安全检查表的开始检查表(插件的原则应与主题的原则相同)。
如果要签出具有安全且可靠编码的主题设置页面的主题,请签出此主题:
http://wordpress.org/extend/themes/coraline
Sanitize anything that could get in and out of (!) the database both front end and back end!
插件和主题应执行适当的数据验证:esc_html()
或esc_textarea()
用于文本区域。WordPress API还提供esc_url()
, esc_url_raw()
, esc_js()
和wp_filter_kses()
.
Bad example:
<?php $url = \'javascript:pwnd()\'; ?>
<a href="<?php echo $url; ?>">anchor</a>
Good example:
<a href="<?php echo esc_url($url); ?>">anchor</a>
以下是Mark Jaquith的精彩视频,介绍了转义函数的用法:$_POST
和$_REQUEST
直接获取数据。$wpdb->prepare
$wpdb
对象,始终使用$wpdb->prepare
使用值填充占位符,而不是使用与SQL代码混合的数据编写查询,如mysql_*
家庭功能错误地教会了每个人。set_theme_mod()
和相关功能not 一个自创的名字方案register_globals
register_globals = on
. 我上一位客户购买的专业主题正是这样做的。我可以在5分钟内破解任何使用此主题的网站…manage_options
) 添加设置页面的功能。主题应使用edit_theme_options
根据相应的功能添加设置页面。
什么的示例not to do:
主题应在所有选项、自定义函数、自定义变量和自定义常量前面加上主题slug。
对于复选框和选择选项,插件和主题应使用checked()
和selected()
输出功能checked="checked"
和selected="selected"
, 分别地
使用wp_safe_redirect() 而不是在指向同一域上的页面时直接调用php的header()函数。
add_options_page()
函数将插件设置页面添加到Settings
菜单,而不是使用add_menu_page()
添加顶级菜单。主题应使用add_theme_page()
函数将主题设置页面添加到Appearance
菜单,而不是使用add_menu_page()
添加顶级菜单。
大约一个月前,我在一个与爱好相关的托管服务器上创建了一个WordPress博客。所以,我目前还不熟悉这一点。由于我担心安全性,我做的一件事就是安装插件WP安全扫描。根据插件结果,我的网站会被检查出来,但我在结果中看到的是一个红旗:文件。wp admin中不存在htaccess/(我在那里ssh了,它不存在)好的,所以我在这个问题上做了大量的搜索,找到了太多的信息。htaccess。我在WordPress上经历了强化WordPress。org网站等,也遇到了这篇文章:http://digwp.com/201