安全加固清单
必做项与系统已内置的七项防护。
必做项
- 删除
install.php - 删除
tests/目录(本地验收脚本,正式站不需要) inc/config.local.php里的APP_DEBUG设为false- 数据库用户不要用 root,单独建库单独授权
- 宝塔面板开启 HTTPS,并给站点配 SSL 证书
- 后台路径可改:把
admin/改名成别的(比如manage-8f3a/),减少被扫的概率
已内置的防护
| 措施 | 说明 |
|---|---|
| 密码哈希 | password_hash + password_verify,不存明文 |
| 会话固定防护 | 登录成功后重新生成 session id |
| 登录限流 | 同一 IP 连续失败会被临时锁定 |
| CSRF 校验 | 所有写操作校验 token |
| 输出转义 | 前台用户可见字段一律 htmlspecialchars |
| SQL 参数化 | 全部使用 PDO 预处理,无字符串拼接 |
| 提交深度限制 | 表单数组递归深度超过 8 层直接丢弃 |
config.local.php 的权限
它含数据库密码。建议设成 640,属主为 Web 用户:
chmod 640 inc/config.local.php
chown www:www inc/config.local.php
不要把内部目录暴露在 Web 根目录
data/(备份与导出)、inc/(源码与配置)、tests/(验收脚本)都不应该能被浏览器直接访问。
Apache:源码里已经为这三个目录放了 .htaccess,无需额外操作。
Nginx(宝塔默认是 Nginx):在「网站 → 设置 → 配置文件」里加上:
location ^~ /data/ { deny all; }
location ^~ /inc/ { deny all; }
location ^~ /tests/ { deny all; }
更稳妥的做法是把 data/ 放在站点根目录之外,通过 config.local.php 里的 DATA_DIR 指过去。