常见漏洞
常见漏洞
安全是一个不断变化的环境,漏洞会随着时间的推移而演变。以下讨论了您应该防范的常见漏洞,以及保护您的主题免遭利用的技术。
漏洞类型
SQL注入
当输入的值未正确清理时,就会发生 SQL 注入,从而可能执行输入数据中的任何 SQL 命令。为了防止这种情况,WordPress API 非常丰富,提供了诸如此类的功能, add_post_meta();
而无需您通过 SQL ( INSERT INTO wp_postmeta…
) 手动添加帖子元。

xkcd妈妈的功绩
强化主题抵御 SQL 注入的第一条规则是:当有 WordPress 功能时,使用它。
但有时您需要执行 API 中未考虑到的复杂查询。如果是这种情况,请始终使用这些 $wpdb
功能。这些是专门为保护您的数据库而构建的。
SQL查询中的所有数据在执行SQL查询之前都必须进行SQL转义,以防止SQL注入攻击。用于 SQL 转义的最佳函数是$wpdb->prepare()
同时支持类似sprintf()和类似vsprintf()的语法。
$wpdb->get_var( $wpdb->prepare(
"SELECT something FROM table WHERE foo = %s and status = %d",
$name, // an unescaped string (function will do the sanitization for you)
$status // an untrusted integer (function will do the sanitization for you)
) );
跨站脚本 (XSS)
当不法分子将 JavaScript 注入网页时,就会发生跨站脚本攻击 (XSS)。
通过转义输出、删除不需要的数据来避免 XSS 漏洞。由于主题的主要职责是输出内容,因此主题应 根据内容的类型使用适当的功能转义动态内容。
转义功能之一的示例是从用户配置文件中转义 URL。
<img src="<?php echo esc_url( $great_user_picture_url ); ?>" />
可以对包含 HTML 实体的内容进行清理,以仅允许指定的 HTML 元素。
$allowed_html = array(
'a' => array(
'href' => array(),
'title' => array()
),
'br' => array(),
'em' => array(),
'strong' => array(),
);
echo wp_kses( $custom_content, $allowed_html );
跨站请求伪造 (CSRF)
跨站点请求伪造或 CSRF(发音为 sea-surf)是指不法分子诱骗用户在其进行身份验证的 Web 应用程序中执行不需要的操作。例如,网络钓鱼电子邮件可能包含指向某个页面的链接,该页面在 WordPress 管理员中删除用户帐户。
如果您的主题包含任何基于 HTML 或 HTTP 的表单提交,请使用 随机数 来保证用户打算执行操作。
<form method="post">
<!-- some inputs here … -->
<?php wp_nonce_field( 'name_of_my_action', 'name_of_nonce_field' ); ?>
</form>
保持最新状态
及时了解潜在的安全漏洞非常重要。以下资源提供了一个良好的起点:
无评论