3种常见的WORDPRESS攻击及如何阻止它们

尽管已经花费了很多精力来确保WordPress的安全性和稳定性,但默认平台仍然具有易受攻击的某些方面。了解这些攻击是至关重要的,因此您可以采取措施加强安全性并提供所需的安心。

正如我们在前一篇文章中所讨论的,代码注入攻击 – 例如跨站点脚本和SQL注入 – 仍然是许多网站所有者的高优先级问题。幸运的是,保护您的网站免受这些入侵只是使用一些常识技术,以及一两段代码。

在这篇文章中,我们将从官方的WordPress开发者网站中获取一些线索,并通过该平台必须应对的一些最常见的攻击。另外,我们还将讨论如何解决它们。让我们开始吧!

WordPress已经做了什么来打击黑客

WordPress安全页面。
WordPress非常重视安全性,正如官方网站上的专用页面所示。

值得一提的是,WordPress已经非常安全,这是你对一个支持这么多网络的平台所期望的。但是,如果你想通过WordPress默认来达到效果,你会认为这是一个不适合专业用途的不安全平台。当然,事实并非如此  。

在安全页面上,WordPress团队清楚地概述了他们关闭潜在黑客入口点的承诺。这包括:

  1. 通过常规增量和点的更新,几乎不间断地修复安全漏洞。
  2. 对向后兼容性的承诺,鼓励用户安装这些定期更新。

尽管所有这些努力,WordPress – 就像每个Web应用程序和内容管理系统(CMS) – 仍然需要帮助来阻止入侵。好消息是,这完全在你的掌控之中。

你可以阻止的3种常见的WordPress攻击

如上所述,任何平台都不可能完全安全。在本节中,我们将根据WordPress开发团队介绍三种最常见的攻击,并讨论如何阻止它们。

1.跨站点脚本(XSS)

首先,跨站点脚本(XSS)是OWASP十大安全风险之一,因此值得特别关注。它是“注入”攻击组的成员,当JavaScript通过易受攻击的动态网站元素(例如联系表单和其他用户输入字段)加载时发生。一个值得注意的严重XSS攻击案例发生在2013年,  针对雅虎。这次袭击将用户帐户留在了黑客手中。

您可以想象,XSS攻击可能会严重降低客户对您(或您客户)业务的信任。因此,采取必要措施防止这种攻击应该是一个优先事项。幸运的是,您可以通过简单地正确转出输出并剥离不需要的数据来消除XSS 。
拿这段HTML,例如:

1
<img src="&lt;?php echo esc_url( $great_user_picture_url ); ?&gt;" />

esc_url()函数是特定于WordPress和替换某些字符来避免XSS攻击。再举一个例子,看看这个片段:

1
2
3
4
5
6
7
8
9
10
11
$allowed_html = array(
'a' =&gt; array(
'href' =&gt; array(),
'title' =&gt; array()
),
'br' =&gt; array(),
'em' =&gt; array(),
'strong' =&gt; array(),
);

echo wp_kses( $custom_content, $allowed_html );

这里,wp_kses()用于仅允许指定的HTML元素和属性出现在字符串中。

这是两个方便的WordPress特定功能,可以在您自己的项目中对抗XSS。使用这些和类似的措施是加强网站安全性的明智方法。

2. SQL注入

SQL注入与XSS密切相关,因为它需要基于您的清理工作的易受攻击的入口点。但是,这里的区别在于这些攻击直接影响您的数据库,这可能会带来灾难性的后果。SQL注入可以影响任何站点,最明显的是NASA在2009年。幸运的是,WordPress使得避免SQL注入攻击变得相对容易。

标准的WordPress API  提供了许多功能来帮助保护输入的数据不受SQL注入的影响。例如,  add_post_meta()  为您提供了使用SQL的INSERT INTO命令的安全方法,这意味着您不必手动将数据库调用添加到代码中。

当然,你的一些SQL查询不会那么简单,并且API有可能不会考虑它们。在这些情况下,您将需要转向wpdb类。这是一个如何工作的例子:

1
2
3
4
5
$wpdb-&gt;get_var( $wpdb-&gt;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)
) );

如您所见,我们使用了$ wpdb-> prepare()函数,该函数在执行之前转义SQL查询。这只是冰山一角,WordPress还有更多内容可以帮助阻止SQL注入攻击。

3.跨站请求伪造(CSRF)

最后,我们有CSRF – 发音为“sea-surfs”。简而言之,这是一个不知情的用户被欺骗进行攻击者选择的行动。要了解此攻击是如何工作的,有必要考虑简单的请求(例如单击链接)是如何工作的。最终,这些请求是两种类型之一:GET或POST。前者是页面请求,后者是数据发送到服务器。

考虑谷歌搜索WordPress,浏览谷歌发起GET响应,搜索WordPress成为POST请求。CSRF是在未经用户同意的情况下发生的。YouTube是  屈服于此攻击的众多网站之一,如果突出的网站容易受到攻击,您需要尽一切努力使您的网站尽可能安全。

这里的解决方案是使用’nonces’  – 一次性安全令牌,旨在保护URL和表单不被泄露。看看这个代码示例:

1
2
<form method="post">   <!-- some inputs here ... -->
<!--?php wp_nonce_field( 'name_of_my_action', 'name_of_nonce_field' ); ?--></form>

在这里,我们使用wp_nonce_field()函数将nonce添加到表单中。这将保证用户打算按预期执行操作(即提交表单),并且他们不需要在前端执行任何操作。

验证nonce不需要设置任何特定参数,但是有一些与输入操作和名称相关的选项可以使你的nonce更安全。此外,还有一些功能可以为URL添加随机数,以及一个 适合AJAX请求的自定义格式。

结论

一个支持大约  30%网络的平台需要坚如磐石,这对WordPress来说绝对是正确的。但是,没有平台可以保证100%的安全性。某些攻击可能使WordPress网站瘫痪,因此您需要尽可能地确保恶意用户难以破解您的网站。

为了帮助您入门,我们研究了三种常见的WordPress攻击以及如何解决这些问题。让我们快速回顾一下:

  1. 跨站点脚本:  可以通过正确转义输出来修复此攻击。
  2. SQL注入:  此相关攻击利用不良的数据清理来访问SQL数据库。
  3. 跨站请求伪造:  WordPress nonce可以帮助验证用户操作,并保证它是合法的。

说点什么

500