中小网站上线安全清单-技术教程论坛-技术之家-989论坛

中小网站上线安全清单

我就是人见人爱花见花开的秋叔,依旧你们老叔,隶属逆行者联盟,看到很多的人建站之后就不管了,反正我遇到好几个客户都是这样子,没有去管基本的安全措施,然后导致被爆破,被传马等等,今天就综合一下最基础的建站之后的安全措施;

图片[1]-中小网站上线安全清单-技术教程论坛-技术之家-989论坛

 

很多人做站点,第一目标是“先跑起来”。这没问题,但真正把站点放到公网后,你会发现第二个目标其实更关键:扛得住扫描、撞库、爬虫、误操作和配置失误。

 先定威胁模型:你到底在防什么

中小网站最常见的风险不是“电影里的黑客”,而是:
– 自动化扫描器批量探测弱点(弱口令、已知漏洞、开放目录)
– 登录口被撞库(账号密码复用)
– 上传点被滥用(木马、恶意脚本、超大文件拖垮磁盘)
– 数据库被注入(拼接 SQL)
– 后台被暴力破解(无频控、无二次验证)
– 运维误操作(日志没留、备份不可恢复)
威胁模型的意义是:优先级排序。先解决高概率+高损失问题,而不是一上来堆“高大上”方案。

1. 架构层:先把“入口”收紧

推荐一个最小可用架构:
– CDN/WAF(可选但推荐)
– Nginx 反向代理
– 应用服务(PHP-FPM / Node / Java)
– 数据库(内网访问)
– 对象存储(用户上传)
关键点
– 数据库禁止公网访问,只允许内网白名单
– SSH 禁止密码登录,只允许密钥登录
– 管理后台加 IP 白名单或二次认证
– 开启自动安全更新(至少系统补丁和中间件补丁)

2. 传输层:HTTPS 不是“可选项”

最低要求:
– 全站 HTTPS(HTTP 301 跳转到 HTTPS)
– TLS 1.2/1.3,关闭过旧协议
– 开启 HSTS(防止降级攻击)

Nginx 示意配置:

```nginx
server {
    listen 80;
    server_name example.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name example.com;

    ssl_protocols TLSv1.2 TLSv1.3;
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
}
```

3. 应用层:三大高危点优先治理

-3.1 SQL 注入:一律参数化,禁止拼接 SQL

错误做法是把用户输入直接拼进查询语句。正确做法是预处理语句。
以php为例

```php
$stmt = $pdo->prepare('SELECT id, username FROM users WHERE email = :email LIMIT 1');
$stmt->execute(['email' => $email]);
$user = $stmt->fetch(PDO::FETCH_ASSOC);
```
-3.2 文件上传:把“可执行”与“可上传”彻底隔离
安全策略建议:
– 仅允许白名单扩展名 + MIME 校验 + 文件头校验
– 上传文件重命名为随机 UUID
– 上传目录禁止脚本执行
– 上传到对象存储,应用侧只保存元数据

-3.3 认证与会话:先挡住撞库和暴力破解
必须做的事:
– 密码哈希使用 `password_hash()`(Bcrypt/Argon2)
– 登录接口限流(按 IP + 账号双维度)
– 多次失败触发验证码或临时锁定
– 高价值账号启用 2FA
– 会话 Cookie 设为 `HttpOnly`、`Secure`、`SameSite=Lax/Strict`

4. 浏览器安全头:低成本高收益

推荐至少加这几项响应头:
– `X-Content-Type-Options: nosniff`
– `X-Frame-Options: DENY` 或 `SAMEORIGIN`
– `Referrer-Policy: strict-origin-when-cross-origin`
– `Content-Security-Policy`(逐步收紧)
其中 CSP 建议先从 `report-only` 模式上线,观察一周日志后再强制执行。

5. 运维层:没有可恢复能力,就不算上线

5.1 备份不是“有就行”,要“能恢复”

执行标准:
– 数据库每日自动备份
– 至少保留 7/30/90 天版本
– 备份异地存储
– 每月做一次恢复演练

5.2 日志与告警:让异常“被看见”
至少采集
– 访问日志(状态码、URI、UA、IP)
– 应用错误日志
– 登录审计日志(成功/失败/来源)
告警建议
– 5xx 激增
– 登录失败率激增
– 单 IP 高频请求
– 磁盘接近满载

6. 发布流程:把安全前移到 CI/CD

上线前自动化检查可以极大降低人为失误:
– 依赖漏洞扫描(如 composer audit / npm audit
Secret 扫描(防止密钥误提交)
IaC/配置扫描(安全组、端口、权限)
– 灰度发布 + 回滚开关
把“人工检查”变成“机器阻断”,安全质量会稳定很多

7. 一份可执行的上线前 Checklist(可直接照抄)

- 域名、证书、HTTPS 跳转已配置
- 数据库、Redis、消息队列均无公网暴露
- 登录接口已限流,后台已加额外认证
- 上传点已做类型校验和执行隔离
- 所有 SQL 已参数化,无字符串拼接查询
- 错误页不暴露堆栈和版本信息
- 全量备份可恢复(至少成功演练一次)
- 监控告警已接入并完成触发测试
- 发布支持一键回滚

 

 
请登录后发表评论