Products
GG网络技术分享 2025-03-18 16:14 0
WordPress 是迄今为止最流行的博客平台。
正由于它的流行,也因此带来了正面和负面的影响。事实上,几乎每个人都使用它,使它更容易被发现漏洞。WordPress 的开发人员做了很多工作,一旦新的缺陷被发现,就会发布修复和补丁,但这并不意味着你可以安装完就置之脑后。
在这篇文章中,我们将提供一些最常见的保护和强化 WordPress 网站的方法。
不用说的是,如果你并不打算只是做一个随意的博客,你应该总是使用 SSL。不使用加密连接登录到你的网站会暴露你的用户名和密码。任何人嗅探流量都可能会发现你的密码。如果你使用 WiFi 上网或者连接到一个公共热点,那么你被黑的几率更高,这是特别真实的。你可以从这里[1]获取受信任的免费 SSL 证书。
由第三方开发人员所开发,每个插件的质量和安全性总是值得怀疑,并且它仅取决于其开发人员的经验。当安装任何额外的插件时,你应该仔细选择,并考虑其受欢迎程度以及插件的维护频率。应该避免维护不良的插件,因为它们更容易出现易于被利用的错误和漏洞。
此主题也是上一个关于 SSL 主题的补充,因为许多插件包含的脚本会发出不安全连接(HTTP)的请求。只要你的网站通过 HTTP 访问,一切似乎很好。但是,一旦你决定使用加密并强制使用 SSL 访问,则会立即导致网站的功能被破坏,因为当你使用 HTTPS 访问其他网站时,这些插件上的脚本将继续通过 HTTP 提供请求。
Wordfence 是由 Feedjit Inc. 开发的,Wordfence 是目前最流行的 WordPress 安全插件,并且是每个严肃的 WordPress 网站必备的,特别是那些使用 WooCommerce 或其它的 WordPress 电子商务平台的网站。
Wordfence 不只是一个插件,因为它提供了一系列加强您的网站的安全功能。它具有 web 程序防火墙、恶意软件扫描、实时流量分析器和各种其它工具,它们可以提高你网站的安全性。防火墙将默认阻止恶意登录尝试,甚至可以配置为按照 IP 地址范围来阻止整个国家/地区的访问。我们真正喜欢 Wordfence 的原因是,即使你的网站因为某些原因被侵害,例如恶意脚本,Wordfence 可以在安装以后扫描和清理你的网站上被感染的文件。
该公司提供这个插件的免费和付费订阅计划,但即使是免费计划,你的网站仍将获得令人满意的水平。
保护你的 WordPress 后端的另一个步骤是使用额外的密码保护任何除了你以外不打算让任何人使用的目录(即URL)。 /wp-admin 目录属于此关键目录列表。 如果你不允许普通用户登录 WordPress,你应该使用密码限制对 wp.login.php 文件的访问。无论是使用 Apache[2] 还是 Nginx[3],你都可以访问这两篇文章,了解如何额外保护 WordPress 安装。
这是攻击者发现你网站上的有效用户名的一种相当简单的方法(即找出管理员用户名)。那么它是如何工作的?这很简单。在任何 WordPress 站点上的主要 URL 后面跟上 /?author=1 即可。 例如:wordpressexample.com/?author=1。
要保护您的网站免受此影响,只需安装停止用户枚举[4]插件。
RPC 代表远程过程调用,它可以用来从位于网络上另一台计算机上的程序请求服务的协议。对于 WordPress 来说,XML-RPC 允许你使用流行的网络博客客户端(如 Windows Live Writer)在你的 WordPress 博客上发布文章,如果你使用 WordPress 移动应用程序那么也需要它。 XML-RPC 在早期版本中被禁用,但是从 WordPress 3.5 时它被默认启用,这让你的网站面临更大的攻击可能。虽然各种安全研究人员建议这不是一个大问题,但如果你不打算使用网络博客客户端或 WP 的移动应用程序,你应该禁用 XML-RPC 服务。
有多种方法可以做到这一点,最简单的是安装禁用 XML-RPC[5]插件。
via: https://www.rosehosting.com/blog/5-tips-for-securing-your-wordpress-sites/
作者:rosehosting.com[6] 译者:geekpi 校对:wxy
本文由 LCTT[7] 原创编译,Linux中国 荣誉推出
[1]: 这里 - https://letsencrypt.org/
[2]: Apache - https://linux.cn/article-5731-1.html
[3]: Nginx - https://linux.cn/article-5229-1.html
[4]: 停止用户枚举 - https://wordpress.org/plugins/stop-user-enumeration/
[5]: 禁用 XML-RPC - https://wordpress.org/plugins/disable-xml-rpc/
[6]: rosehosting.com - rosehosting.com
[7]: LCTT - https://github.com/LCTT/TranslateProject
某些项目中,网站允许用户使用外链图片发布文章,或者处于某些特殊原因,网站希望抓取文中的第一张远程图片作为特色图片,并像QQ空间一样,将这张图片保存到本地,并插入到数据库中。总之,完成一系列动作之后,网站希望发现这张原本是远程外链的图片被放在本地,并成
这个动作我们使用一个hook来实现:
add_action(\'publish_post\', \'fetch_images\',999); |
再创建一个fetch_images函数,来实现本文所说的所有功能。
function fetch_images( $post_ID ){ if ( defined(\'DOING_AUTOSAVE\') && DOING_AUTOSAVE ) return; if ( !current_user_can(\'edit_post\', $post_ID) ) return; $post = get_post($post_ID); |
接下来,我们要获取文章内容中的第一张图片:
$first_image = \'\'; preg_match(\'/<img.+src=[\\\'\\\"]([^\\\'\\\"]+)[\\\'\\\"].* \\/>/i\',$post->post_content,$images); if(!empty($images))foreach($images as $image){ if(strpos($image,\'http\') === 0){ $first_image = $images[1]; break; } } |
但实际上,通过上述的代码获得的图片src可能也是有问题的,或者根本没有抓取到数据。不过我们先不考虑这些问题,我们先实现本文的目标。
接下来就是关键代码一,它要实现“抓取-保存到本地”两个功能:
$get = wp_remote_get( $get_image_src ); $type = wp_remote_retrieve_header( $get, \'content-type\' ); $file_name = basename($get_image_src); $file_content = wp_remote_retrieve_body($get); $mirror = wp_upload_bits($file_name,null,$file_content); |
这个地方有一个变化,上面我们获得了$first_image,这个地方的$get_image_src是上述得到的要抓取的远程图片地址。
在WordPress中,提供了wp_remote_get、wp_remote_retrieve_body等原创抓取和信息获取函数,你可以查看官方文档以了解和remote相关的函数。wp_upload_bits则将抓取到的图片的二进制内容保存到本地,根据其文件类型,最终成为本地保存的图片,并将保存完后获得的本地图片信息保存在$mirror中。
既然已经保存到本地了,接下来就是将图片信息保存到数据库中。
Demand feedback