完成建站上线后,大多数人的注意力会转向内容创作和推广。然而,网站安全往往是被忽略的一环,直到出现问题才被动应对。
这篇文章不讲高深的渗透测试或代码审计,而是面向非技术背景的建站者,梳理最基本的安全措施——每一项都是低成本、高回报的防护动作。
一、强密码和双因素认证
事实:弱密码是网站被攻破的最常见原因
很多网站后台被入侵,不是因为攻击者使用了多么高级的技术,而是因为管理员使用了 admin123 或 123456 这种弱密码。
你需要做到
- 密码长度至少 12 位,包含大小写字母、数字和特殊字符。
- 每个网站使用不同的密码。使用密码管理器(如 Bitwarden、1Password)来管理,不必靠脑子记。
- 在可用时开启双因素认证(2FA):如果后台、身份系统或上游访问控制支持手机验证器动态验证码,即使密码泄露,攻击者也难以登录。
- 不要与他人共享后台账号:如果有多个内容编辑者,为每位编辑者创建独立账号,而不是共用一个管理员账号。
Halo 中的操作
Halo 后台默认支持密码登录,建议配合安全策略使用强随机密码;个人中心也支持基于 TOTP 的两步验证,管理员账号应优先开启。如果你需要更高的登录安全性,还可以结合 SSO、OAuth、Cloudflare Access 或反向代理访问控制提供额外验证。
二、定期备份:最便宜的保险
为什么备份如此重要?
服务器硬盘可能损坏、软件升级可能失败、网站可能被恶意篡改。任何情况发生时,如果你有一份近期备份,恢复只是几分钟的事情;如果没有备份,你可能需要从头搭建网站并丢失所有历史数据。
备份什么?
| 备份内容 | 说明 |
|---|---|
| 数据库 | 所有文章、页面、用户、评论、配置等 |
| 上传文件 | 图片、附件、主题自定义文件 |
| 配置文件 | Nginx/Apache 配置、Docker Compose 文件、环境变量 |
备份到哪里?
- 云存储:阿里云 OSS、腾讯云 COS、AWS S3,成本低且安全。
- 其他服务器或 NAS:防止单点故障。
- 本地电脑:作为额外的冷备份副本。
备份频率
- 数据库:每天自动备份。
- 上传文件:每周全量备份,每日增量备份。
- 配置文件:每次修改后手动备份。
Halo 中怎么做?
Halo 从 2.8 开始内置了备份与恢复功能。在控制台左侧菜单进入「备份」,点击「创建备份」即可发起一次备份请求;备份会在后台异步执行,完成后再下载或保留备份文件。恢复时可以上传备份文件、填写远程备份文件 URL,或让 Halo 从工作目录的 backups 目录中扫描备份文件。
如果希望自动化,可以优先考虑两种方式:
- 使用 Halo 的增强备份插件配置定时备份和远程同步,适合希望在 Halo 控制台内完成备份管理的站点。远程同步建议使用私有对象存储,不要把备份文件所在的存储桶设为公开访问。
- 如果服务器使用 1Panel,可以用 1Panel 的计划任务备份 Halo 网站数据,把数据库和站点文件一起纳入备份范围。
恢复前要先读清楚注意事项:恢复过程可能耗时较长,已有数据不会整体清空,但冲突数据可能被覆盖;恢复完成后 Halo 可能需要停止并重新启动。真正可靠的备份,不只是“生成过文件”,而是至少做过一次恢复演练,确认备份文件能用。
最重要的规则:3-2-1 备份原则
- 3 份数据副本。
- 2 种不同的存储介质。
- 1 份离线或异地存储。
这意味着:一份备份在服务器上,一份在云存储,一份下载到本地电脑。任何单一故障都不会让你丢失所有数据。
三、保持系统和软件更新
为什么更新如此重要?
很多成功的网络攻击,利用的都是已知且已有补丁的漏洞。攻击者会批量扫描互联网上未打补丁的系统,找到目标后使用公开的漏洞利用代码攻击。不及时更新,就更容易成为批量扫描命中的目标。
你需要更新什么?
| 组件 | 更新频率参考 |
|---|---|
| 操作系统(apt/yum update) | 每周检查 |
| Web 服务器(Nginx/Apache) | 每月检查 |
| 建站系统(如 Halo) | 关注官方发布,及时升级 |
| 插件/主题 | 与系统更新同步 |
| 数据库 | 每季度检查 |
更新的安全做法
- 在更新前先做一次完整备份。这永远是一句值得重复的话。
- 先在测试环境验证:如果有条件,先在测试服务器上升级,确认无问题后再更新生产环境。
- 关注安全公告:Halo 和其他主流建站系统会在官方渠道发布安全更新,请留意。
四、常见 Web 威胁的初步认知
你不需要成为一名安全专家,但了解以下基本概念有助于你意识到风险的存在。
SQL 注入
攻击者通过在输入框(如登录表单、搜索框)中注入恶意 SQL 代码,试图操纵数据库。现代建站系统通常会通过框架的数据访问层、参数化查询和输入校验降低 SQL 注入风险。Halo 基于 Spring Boot,并使用 R2DBC 等数据访问能力处理数据库连接;普通站点不需要自己拼接 SQL。但如果你使用了第三方插件或自定义代码,需要确认它们没有把用户输入直接拼进查询。
XSS(跨站脚本攻击)
攻击者将恶意脚本注入到网页中,当其他用户浏览该页面时脚本被执行,可能窃取用户的登录凭据。现代建站系统通常会自动过滤用户提交内容中的脚本标签。
暴力破解
攻击者使用自动化工具,用大量常用密码组合不断尝试登录你的后台。防御方式:
- 限制登录失败次数(如 5 次失败后锁定 15 分钟)。
- 使用强密码。
- 如果后台或上游身份系统支持,开启 2FA。
文件上传漏洞
如果网站允许用户上传文件,但没有验证文件类型,攻击者可能上传一个伪装成图片的可执行脚本。Halo 提供附件、存储策略和上传配置能力,建议为管理端、个人中心、头像等场景设置合适的存储策略、分组、文件格式和大小限制;第三方插件提供的上传入口也要单独检查。
五、Web 应用防火墙(WAF):最后一层防线
WAF 是什么?
WAF 是一种在网站流量到达服务器之前,检查并过滤恶意请求的安全工具。它可以识别和拦截 SQL 注入、XSS、恶意爬虫、CC 攻击等常见威胁。
什么时候需要 WAF?
- 任何时候都可以用:如果你的站点适合接入 Cloudflare 等边缘服务,可以开启基础 WAF 和 DDoS 防护。
- 强烈推荐:如果你的网站有用户登录、评论区、表单提交等交互功能。
- 优先配置:如果你的网站遭遇过攻击或有较高的被攻击风险。
方案选择
- Cloudflare(免费):提供基础 WAF 规则 + DDoS 防护,配置简单,全球节点。
- 国内云厂商 WAF:阿里云 WAF、腾讯云 WAF,与国内云服务器生态集成好,支持自定义规则。
- 开源 WAF(如 ModSecurity):需要自行部署和维护,灵活性高但学习成本也高。
六、Halo 站点的安全管理入口
备份功能
Halo 站点的备份至少应覆盖数据库、上传附件和关键配置。可以使用控制台内置的备份与恢复能力,也可以使用增强备份插件、1Panel 计划任务或服务器层面的定时脚本做自动备份;关键不是“能不能点一次下载”,而是能否定期自动备份、异地保存,并完成恢复验证。商城版如果使用了商城功能,还要额外确认商城相关数据是否已通过数据库或服务器级备份覆盖。
安全相关设置
- 管理员密码:在后台用户管理中修改,建议使用强随机密码。
- HTTPS 强制:在 Nginx 或 CDN 层面配置 HTTP 到 HTTPS 的 301 跳转。
总结
把几件最基础的事做好,安全风险就能降很多:所有账号用彼此不重复的强密码,能开双因素认证就开上;数据库和文件设置定期自动备份,遵循 3-2-1 原则——三份副本、两种存储介质、一份离线;操作系统和建站系统保持更新,每次更新前先做备份;对 SQL 注入、XSS、暴力破解这些常见威胁有一个基本认知;按需配置 WAF 或边缘防护;网站强制 HTTPS,所有 HTTP 请求做 301 跳转。
网站安全不是一次性的配置,而是一个持续关注的过程。上面这些措施覆盖了绝大多数小型网站的基础安全需求,成本通常不高,但能显著降低常见风险。
安全措施做到位了,剩下一个最影响用户体验的因素:图片加载速度。下一篇是这系列最后一篇了。