如何保护您的 WordPress 不被黑?

news2024/11/12 16:43:14

明月可以说是见到过太多 WordPress 网站被黑的示例了,加上平时明月也会接一些 WordPress 疑难杂症的解决服务订单,所以这方面绝对是专业对口了。作为一个资深 WordPress 博客站长,谁都有被黑过的经历,都是一步步走过来的,现在的互联网上 WordPress 被黑、被篡改是比被 CC 攻击、被 DDoS 攻击还要普遍的一个现象。要明月总结最主要的原因就是不安全的使用习惯缺乏网站安全意识

今天明月就给大家说说平时我们应该如何保护我们的 WordPress 不被黑,明月一直不建议 WordPress 去使用什么安全插件之类,虽然很久之前明月也有过相关插件的推荐,但说实话这些插件的体验都非常的差,甚至有的会严重拖慢整个 WordPress 的运行效率,严重的甚至拖垮整个服务器。毕竟不少的安全插件都涉及到 WordPress 核心文件的操作,这本身也是一种安全隐患,理论上不是 WordPress 官方的插件都不可靠,这也是我至今推荐 WordPress 缓存插件只推荐 WP Super Cache 的一个主要原因。所以,今天给大家讲的都是平时我们可以轻松做到只需要保持这些为习惯即可,并不涉及太多技术层面的事儿!

保护 WordPress 的核心其实就一条,那就是权限。所有 WordPress 被黑几乎都是在权限上出了问题,如:数据库权限、WordPress 核心文件权限、WordPress 核心目录权限等等,所谓的权限其实也是 Linux 系统一个非常核心的概念,用好权限逻辑根本不需要什么其他第三方的安全插件、安全应用啥的。Linux 本身安全性已经是翘楚级别了,WordPress 被黑只有一个原因就是你没有利用好 Linux。就拿 WordPress 的配置文件wp-config.php来说,这个文件用过 WordPress 的都知道,对于 WordPress 来说非常的重要,最起码你 WordPress 网站的数据库地址、账号、密码都在这个文件里保存着的,并且还是明码哦,所以要保护我们 WordPress 首先就是把wp-config.php的权限设置为600(目的是只有文件的所有者(通常是 Web 服务器用户)才能读取和写入该文件。其他用户和组将无法访问该文件)

命令行方式设定 wp-config.php 文件权限:

chmod 600 wp-config.php

宝塔面板里操作:

记住,Linux 下永远不要把文件或者目录权限设置为777,因为 777 代表所有用户都具有对文件或目录的完全控制权限,即读、写和执行权限。这意味着:

  • 文件所有者 可以对文件或目录执行任何操作。
  • 所属组 可以对文件或目录执行任何操作。
  • 其他用户 可以对文件或目录执行任何操作。

虽然在某些情况下,例如临时授予对文件的完全访问权限时,可能需要使用 777 权限,但通常不建议使用 777 权限,因为它会带来严重的安全风险。 授予所有用户完全控制权可能会使恶意用户轻松窃取或破坏您的文件。正确的方案是:

  • 对于文件所有者需要完全控制权的文件或目录,请使用 644 权限。 这意味着所有者具有读写执行权限,而所属组和其他人只有读权限。
  • 对于所属组需要完全控制权的文件或目录,请使用 755 权限。 这意味着所有者和所属组具有读写执行权限,而其他用户只有读权限。
  • 对于其他用户不需要任何权限的文件或目录,请使用 400 权限。 这意味着只有所有者具有读权限。

在宝塔面板里 WordPress 根目录默认的读写权限就是 755,所以这就会带来另一个安全隐患那就是内部威胁隐患,也就是恶意的、被植入了后门、木马的 PHP 代码,甚至有些 PHP 代码里隐藏了可以直接篡改 WordPress 核心目录wp-adminwp-include的代码,这是很多 WordPress 被黑最常见的手法,解决起来其实很简单,就是不要随意上传、启用来路不明的插件、主题,尤其是所谓的免费破解版之类的,甚至连 WordPress 官方插件库里插件、主题都不保证一定没有恶意代码。这也是为啥明月一直强调 WordPress 慎用插件和主题的原因。

这里奉劝大家不要奢望你可以找出这些恶意代码,这不仅仅需要你有很强的代码阅读理解能力,还需要大量的时间精力,有这本事和功夫,你完全可以自己写个插件了都。 

所以,这里明月的习惯是不定期的检查一下 WordPress 核心目录文件是否被篡改、是否有多余的文件,可惜的是宝塔面板里没有提供免费的方法,付费的明月也没有用过,反正明月都是直接命令行解决,在宝塔面板里大家完全可以借助【终端】里运行如下的命令即可:

diff -r /path/wordpress /path/www.imydl.com | diffstat

执行上述命令需要提前下载好 WordPress 最新版压缩包并解压到指定目录/path/wordpress,然后通过diff命令比较你的站点目录/path/www.imydl.com的 WordPress 核心文件目录是否有变更,最后的diffstat命令是根据diff的比较结果,显示统计数字。 diffstat读取diff的输出结果,然后统计各文件的插入,删除,修改等差异计量。Linux 默认是没有安装diffstat命令的,大家手动在【终端】里安装即可:

下载 WordPress 最新压缩包并解压:

wget https://wordpress.org/latest.zip

解压缩:

unzip latest.zip

注意,出于安全考虑这个 WordPress 最新压缩包一定要放到 Web 端无法请求的目录里,并记录好绝对地址

CentOS:

yum install -y diffstat

Debian 或者 Ubuntu:

apt install -y diffstat

执行结果如果发现有被更改过的文件就会显示出来具体的信息,如下图所示:

从上图我们可以看到只有admin-zh_CN.pozh_CN.po这两个无关紧要的语言包被修改过,说明我们站点用的 WordPress 是完整安全的。

我们还可以再加入一个-d 参数,来对比排查一下是否又多余的文件和目录:

diff -rd /path/wordpress /path/www.imydl.com | diffstat

如果发现了,可以直接删除掉,也说明你的 WordPress 已经被污染了,这时候就要小心了,仔细回忆一下是否安装了什么插件或者主题,找到这些停用排查吧。不过,明月的经验是直接删除最好,然后彻底的更新 WordPress,一般会缓解很多,如果不幸被篡改了 Linux 设置,那就是只能备份好数据重置系统了。

这里,明月给大家分享一个快速删除 WordPress 核心目录文件并自动下载最新 WordPress 解压的脚本:

#!/bin/bash

# 定义 WordPress 安装路径
WP_PATH="$PWD"

# 导航到 WordPress 安装目录
cd "$WP_PATH"

# 下载最新版的 WordPress
wget https://wordpress.org/latest.zip

# 解压文件
unzip latest.zip

# 删除旧的 wp-admin 和 wp-includes 目录
rm -rf wp-admin
rm -rf wp-includes

# 进入 wordpress 目录并删除 wp-content(如果需要)
cd wordpress
rm -rf wp-content

# 复制新文件到上级目录覆盖旧文件
mv -f * ..

# 删除 wordpress 目录
rm -rf wordpress

# 赋予文件正确的所有权和权限
chown -R www:www "$WP_PATH"

# 提示完成信息

echo "WordPress 升级完成,请检查网站功能是否正常。"

保存上述代码为updatewp.sh文件,然后修改为可执行权限:

chmod +x updatewp.sh

复制updatewp.sh文件到网站根目录执行:

./updatewp.sh

显示"WordPress 升级完成,请检查网站功能是否正常。"就表明你网站的 WordPress 核心目录、文件已经被替换为 WordPress 最新版了,全程都是自动的,运行完记得删除updatewp.sh即可。放心不会影响你网站原有内容的,仅仅是自动替换了 WordPress 核心文件和目录而已,明月亲测有效的。我经常这么给代维、托管客户的 WordPress 升级更新的,比 WordPress 后台更新更加高效安全,永远不会出现各种奇葩的更新错误的。

如此养成上述的操作习惯,基本上你的 WordPress 就很难被黑,并且定期的对比一下 WordPress 核心目录和文件的完整性可以及时发现各种被黑的风险,这比你用什么安全应用扫描快捷有效多了。涉及安全方面的无小事,能不用第三发的就少用第三方的就是了。

至于 SQL 注入攻击什么的,一般只要做好上述的保护操作,就不会被恶意注入的,除非你用的某个插件或者主题里有不规范的 SQL 语句漏洞、BUG 被别人扫描到了,那就不是 WordPress 被黑的问题了,趁早删除插件或者更换主题吧!话说,用的人越多和破解版最多的主题最容易被 SQL 注入攻击,成功率好像还很大的样子!有条件还是购买正版主题为佳了,花点儿钱的事儿,不丢人!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1948247.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从零入门AI for Science(AI+化学)#Datawhale AI 夏令营

基于天池平台“第二届世界科学智能大赛 物质科学赛道:催化反应产率预测”使用平台 我的Notebook 魔搭社区 https://modelscope.cn/my/mynotebook/preset 赛事官网 上海科学智能研究院 http://competition.sais.com.cn/competitionDetail/532233/myScore Task1 …

七、SpringBoot日志

1. 得到日志对象 import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; //打印日志…

【Vue实战教程】之Vue工程化项目详解

Vue工程化项目 随着多年的发展,前端越来越模块化、组件化、工程化,这是前端发展的大趋势。webpack是目前用于构建前端工程化项目的主流工具之一,也正变得越来越重要。本章节我们来详细讲解一下如何使用webpack搭建Vue工程化项目。 1 使用we…

Web渗透-WAF绕过技巧

一、WAF简介 Web应用防护系统(也称为:网站应用级入侵防御系统。英文:Web Application Firewall,简称: WAF)。利用国际上公认的一种说法:Web应用防火墙是通过执行一系列针对HTTP/HTTPS的安全策略…

叮!2024 龙蜥操作系统大会议题征集正式启动

定啦!2024 龙蜥操作系统大会(OpenAnolis Conference,以下简称“龙蜥大会”)将于 2024 年 8 月 30 日在北京中关村国家自主创新示范区会议中心盛大召开。 2024 龙蜥大会由中关村科学城管委会、海淀区委网信办、中国开源软件推进联…

配置sublime的中的C++编译器(.sublime-build),实现C++20

GCC 4.8: 支持 C11 (部分) GCC 4.9: 支持 C11 和 C14 (部分) GCC 5: 完全支持 C14 GCC 6: 支持 C14 和 C17 (部分) GCC 7: 支持 C17 (大部分) GCC 8: 完全支持 C17,部分支持 C20 GCC 9: 支持更多的 C20 特性 GCC 10: 支持大部分 C20 特性 GCC 11: 更全面地支持 C20 …

uniapp开发精选短视频视频小程序实战笔记20240725,实现顶部轮播图和热门短剧

创建项目 创建项目,叫video_app。 在pages.json里面修改一下标题: 新建search搜索页面和me我的页面。 此时界面预览效果如下: 引入静态资源 主要是static里面的内容,全部复制过来。 配置底部导航栏 pages.json,放到顶层,和全部样式同级: "tabBar&quo…

Java的类加载机制

Java的类加载机制是指将类的字节码文件(.class文件)加载到JVM中并将其转换为Class对象的过程。这个过程由类加载器(ClassLoader)完成。Java的类加载机制具有动态性和灵活性,使得Java能够支持动态加载类、实现模块化开发…

4s店客户管理系统小程序的设计

管理员账户功能包括:系统首页,个人中心,用户管理,门店管理,车展管理,汽车品牌管理,新闻头条管理,预约试驾管理,我的收藏管理,系统管理 微信端账号功能包括&a…

HTTP请求入参类型解读

HTTP请求入参类型解读 Content-Type 在HTTP请求中,Content-Type请求头用于指示资源的MIME类型,即请求体的媒体类型。它告诉服务器实际发送的数据类型是什么,以便服务器能够正确地解析和处理这些数据。Content-Type可以有多种值,…

13.2 MongoDB

13.2 MongoDB 1. 概述2. docker安装3. SpringBoot整合MongoDB3.1 依赖3.2 配置连接1. 基于`yml`配置2. 基于配置类配置3.3 启动项坑1坑23.4 新增业务1. 实体类映射2. 数据层3. 业务层4. 控制层5. 测试结果3.5 单条记录查询业务1. 数据层2. 业务层3. 控制层4. 断点测试3.6 分页查…

代码随想录算法训练营day6 | 242.有效的字母异位词、349. 两个数组的交集、202. 快乐数、1.两数之和

文章目录 哈希表键值 哈希函数哈希冲突拉链法线性探测法 常见的三种哈希结构集合映射C实现std::unordered_setstd::map 小结242.有效的字母异位词思路复习 349. 两个数组的交集使用数组实现哈希表的情况思路使用set实现哈希表的情况 202. 快乐数思路 1.两数之和思路 总结 今天是…

FoundationDB 基本使用

目录 一、FoundationDB介绍 二、安装单机版FoundationDB 2.1 下载安装程序 2.2 安装FoundationDB 2.3 修改配置信息 2.4 管理FoundationDB服务 三、fdbcli的常用命令 3.1连接数据库 3.2退出fdbcli 3.3查看版本 3.4 写模式 3.5写入键值 3.6读取键值 3.7删除键值 …

花几千上万学习Java,真没必要!(二十七)

1、Math类: package mathtest.com; public class MathDemo { public static void main(String[] args) { // 定义圆的半径 double radius 5.0; // 计算并打印圆的周长 double circumference 2 * Math.PI * radius; System.out.printf("圆的周长: %.2f…

Vue 状态管理 Vue CLI

Vue 状态管理 & Vue CLI 1、状态管理2、集中状态管理2.1 Vuex2.1.1 Vuex核心概念2.1.2 Vuex Store实例2.1.3 Vuex Getter2.1.4 Vuex Mutation2.1.4 Vuex Actions2.1.4 Vuex Module 2.2 Pinia2.2.1功能增强 3、Vuex 实现原理4、Pinia 实现原理5、CLI5.1 实现 1、状态管理 将…

【机器学习】激活函数:神经网络的灵魂

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 激活函数:神经网络的灵魂什么是激活函数?常见激活函数类型1. Sigmo…

Linux环境安装KubeSphere容器云平台并实现远程访问Web UI 界面

文章目录 前言1. 部署KubeSphere2. 本地测试访问3. Linux 安装Cpolar4. 配置KubeSphere公网访问地址5. 公网远程访问KubeSphere6. 固定KubeSphere公网地址 前言 本文主要介绍如何在Linux CentOS搭建KubeSphere并结合Cpolar内网穿透工具,实现远程访问,根…

UE4调试UE4Editor-Cmd.exe

在工作中,我们看到这样的构建命令: %EnginePath%\Binaries\Win64\UE4Editor-Cmd.exe %ClientPath%\%ProjectName%.uproject -runHotPatcher {其它参数} 我们应该如何调试UE4Editor-Cmd.exe呢?其实调试 UE4Editor.exe 就可以了(参考…

Mac安装Hoomebrew与升级Python版本

参考 mac 安装HomeBrew(100%成功)_mac安装homebrew-CSDN博客 /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)" 安装了Python 3.x版本,你可以使用以下命令来设置默认的Python版本: # 首先找到新安…

IDEA安装并使用通义灵码

IDEA安装并使用通义灵码 通义灵码介绍安装通义灵码 通义灵码介绍 在数字革命的前沿,阿里云技术团队匠心独运,倾力打造“通义灵码”——一个融合尖端科技的智能编码助手,旨在革新软件工程的未来。 实时代码扩展 通义灵码具备深度理解代码脉络的…