网站安全基础:建站后必须做的 6 件事

2 阅读

完成建站上线后,大多数人的注意力会转向内容创作和推广。然而,网站安全往往是被忽略的一环,直到出现问题才被动应对。

这篇文章不讲高深的渗透测试或代码审计,而是面向非技术背景的建站者,梳理最基本的安全措施——每一项都是低成本、高回报的防护动作。


一、强密码和双因素认证

事实:弱密码是网站被攻破的最常见原因

很多网站后台被入侵,不是因为攻击者使用了多么高级的技术,而是因为管理员使用了 admin123123456 这种弱密码。

你需要做到

  1. 密码长度至少 12 位,包含大小写字母、数字和特殊字符。
  2. 每个网站使用不同的密码。使用密码管理器(如 Bitwarden、1Password)来管理,不必靠脑子记。
  3. 在可用时开启双因素认证(2FA):如果后台、身份系统或上游访问控制支持手机验证器动态验证码,即使密码泄露,攻击者也难以登录。
  4. 不要与他人共享后台账号:如果有多个内容编辑者,为每位编辑者创建独立账号,而不是共用一个管理员账号。

Halo 中的操作

Halo 后台默认支持密码登录,建议配合安全策略使用强随机密码;个人中心也支持基于 TOTP 的两步验证,管理员账号应优先开启。如果你需要更高的登录安全性,还可以结合 SSO、OAuth、Cloudflare Access 或反向代理访问控制提供额外验证。


二、定期备份:最便宜的保险

为什么备份如此重要?

服务器硬盘可能损坏、软件升级可能失败、网站可能被恶意篡改。任何情况发生时,如果你有一份近期备份,恢复只是几分钟的事情;如果没有备份,你可能需要从头搭建网站并丢失所有历史数据。

备份什么?

备份内容说明
数据库所有文章、页面、用户、评论、配置等
上传文件图片、附件、主题自定义文件
配置文件Nginx/Apache 配置、Docker Compose 文件、环境变量

备份到哪里?

  • 云存储:阿里云 OSS、腾讯云 COS、AWS S3,成本低且安全。
  • 其他服务器或 NAS:防止单点故障。
  • 本地电脑:作为额外的冷备份副本。

备份频率

  • 数据库:每天自动备份。
  • 上传文件:每周全量备份,每日增量备份。
  • 配置文件:每次修改后手动备份。

Halo 中怎么做?

Halo 从 2.8 开始内置了备份与恢复功能。在控制台左侧菜单进入「备份」,点击「创建备份」即可发起一次备份请求;备份会在后台异步执行,完成后再下载或保留备份文件。恢复时可以上传备份文件、填写远程备份文件 URL,或让 Halo 从工作目录的 backups 目录中扫描备份文件。

如果希望自动化,可以优先考虑两种方式:

  1. 使用 Halo 的增强备份插件配置定时备份和远程同步,适合希望在 Halo 控制台内完成备份管理的站点。远程同步建议使用私有对象存储,不要把备份文件所在的存储桶设为公开访问。
  2. 如果服务器使用 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 计划任务或服务器层面的定时脚本做自动备份;关键不是“能不能点一次下载”,而是能否定期自动备份、异地保存,并完成恢复验证。商城版如果使用了商城功能,还要额外确认商城相关数据是否已通过数据库或服务器级备份覆盖。

参考:Halo 备份与恢复文档 · 如何自动备份 Halo 网站

安全相关设置

  • 管理员密码:在后台用户管理中修改,建议使用强随机密码。
  • HTTPS 强制:在 Nginx 或 CDN 层面配置 HTTP 到 HTTPS 的 301 跳转。

总结

把几件最基础的事做好,安全风险就能降很多:所有账号用彼此不重复的强密码,能开双因素认证就开上;数据库和文件设置定期自动备份,遵循 3-2-1 原则——三份副本、两种存储介质、一份离线;操作系统和建站系统保持更新,每次更新前先做备份;对 SQL 注入、XSS、暴力破解这些常见威胁有一个基本认知;按需配置 WAF 或边缘防护;网站强制 HTTPS,所有 HTTP 请求做 301 跳转。

网站安全不是一次性的配置,而是一个持续关注的过程。上面这些措施覆盖了绝大多数小型网站的基础安全需求,成本通常不高,但能显著降低常见风险。


安全措施做到位了,剩下一个最影响用户体验的因素:图片加载速度。下一篇是这系列最后一篇了。


评论