初始化

This commit is contained in:
2026-08-08 18:27:38 +08:00
parent efc150c937
commit 060eb79c09
336 changed files with 24613 additions and 15 deletions
+104
View File
@@ -0,0 +1,104 @@
# 企业官网 · 安全等级评估报告
> 评估对象:cloud-chip-laravel-vueLaravel 12 + Vue3 CDN 零构建栈)
> 评估日期:2026-08-03
> 评估方式:源码审计 + 本地运行验证(PHP 8.3 / MySQL 5.7),覆盖路由、控制器、中间件、配置、视图与依赖。
---
## 一、综合评级
| 场景 | 综合等级 | 说明 |
| --- | --- | --- |
| 当前(本地开发配置) | **B** | 框架与代码安全基线良好;但 `.env` 仍是开发值(`APP_DEBUG=true``SESSION_SECURE_COOKIE=false`),且此前缺少响应头与登录节流(本次已修复)。 |
| 部署合规后(修正配置 + HTTPS) | **A** | 达到企业官网安全基线。剩余项均为可选增强。 |
> 评级说明:本项目基于 Laravel 12「安全优先」框架,代码层已具备 CSRF、参数化查询、输出转义、严格上传校验等能力;风险主要集中在**部署配置**与**纵深防御响应头**,均已给出整改项。
---
## 二、各安全维度评分
| 维度 | 评级 | 关键依据 |
| --- | --- | --- |
| 注入防护(SQLi / XSS | **A** | Eloquent 全程参数化查询,杜绝 SQL 注入;视图默认 `{{ }}` 转义;富文本经 `mews/purifier` 净化(default/article 两档)。 |
| 身份认证与会话 | **A** | 密码 bcrypt 哈希;登录成功 `session()->regenerate()` 防会话固定;新增登录节流(5 次/分钟);后台具备 RBAC 五角色 + 权限点门禁。 |
| Cookie 安全 | **B+** | `http_only=true``encrypt=true``same_site=lax` 均已开启;`secure``.env` 中为 `false`(本地值,上线须置 `true`)。 |
| 配置安全 | **C+** | 当前 `.env``APP_DEBUG=true``APP_ENV=local`、数据库弱口令 `cloudchip_cn/cloudchip_cn`——**均为本地开发值,上线前必须修改**。 |
| 传输与响应头 | **A** | 本次新增 `SecurityHeaders` 中间件:CSP、X-Frame-Options(DENY)、X-Content-Type-Options(nosniff)、Referrer-Policy、Permissions-PolicyHSTS 待生产 HTTPS 启用。 |
| 文件上传 | **A** | `image` + `mimes:jpg,jpeg,png,gif,webp` + `max:5120` 严格校验;存储于 `storage/app/public`(经 `storage:link` 暴露,非 PHP 执行目录),命名随机防遍历。 |
| 防滥用 / 限流 | **A** | 联系表单 `RateLimiter` 5 次/60 秒;登录接口新增 `ThrottlesLogins` 5 次/分钟(按 IP+邮箱)。 |
| 依赖与供应链 | **B** | 仅引入 `mews/purifier``simple-qrcode` 等少量可信依赖;建议上线前执行 `composer audit`。 |
| 日志与错误处理 | **B+** | `LOG_CHANNEL=stack`;只要 `APP_DEBUG=false`,异常不会向用户泄露堆栈与环境信息。 |
---
## 三、本次已实施的安全加固(代码层)
1. **新增 `App\Http\Middleware\SecurityHeaders` 并注册到 `web` 中间件组**
- 下发 `Content-Security-Policy`(限制脚本/样式/连接/表单来源,显著缩小 XSS 影响面)、`X-Frame-Options: DENY`(防点击劫持)、`X-Content-Type-Options: nosniff`(防 MIME 嗅探)、`Referrer-Policy``Permissions-Policy`
- 生产 + HTTPS 环境下自动追加 `Strict-Transport-Security`HSTS,含 `preload`)。
- CSP 针对本项目的零构建架构做了适配:放行 `cdn.tailwindcss.com` 与内联脚本/样式(否则 Tailwind Play CDN 与内联 `tailwind.config` 会被拦截)。
2. **登录接口增加防暴力破解节流**
- `LoginController` 引入 `ThrottlesLogins`,同一 IP+邮箱 每分钟最多 5 次,超限返回校验错误并锁定。
3. **修复联系表单 CSRF 失效缺陷(功能性 + 安全性)**
- 发现布局缺少 `<meta name="csrf-token">`,导致 Vue 联系表单取不到 token、提交被 Laravel 拦截返回 419(原表单实际不可用)。
- 已在布局 `<head>` 补齐该 meta 标签,并经端到端验证:取 token → POST → 返回 `{"ok":true}`HTTP 200。
---
## 四、残余风险与整改建议(按优先级)
### P0 · 上线前必须完成
- [ ] **关闭调试模式**`.env``APP_DEBUG=false``APP_ENV=production`。否则将向访客泄露堆栈、环境变量等敏感信息。
- [ ] **启用安全 Cookie**`SESSION_SECURE_COOKIE=true`(HTTPS 站点必须),防止会话被明文中间人窃取。
- [ ] **强制 HTTPS**:在反向代理/Web 服务器层 301 跳转 HTTP→HTTPS,并启用 HSTS(中间件已在生产自动下发)。
- [ ] **数据库强口令 + 最小权限**:更换为高强度独立口令,账号仅授予本站库所需权限;切勿使用本地弱口令 `cloudchip_cn`
- [ ] **保护敏感文件**:确保 `.env``.gitignore``.workbuddy` 等不被 Web 直接访问(当前项目结构 `.env``public/` 之外,已天然隔离;部署时复核 Nginx/Apache 配置,禁止访问点号开头的隐藏文件)。
### P1 · 强烈建议
- [ ] **配置可信代理 `TrustProxies`**:若站点置于 CDN / 负载均衡之后,需在 `bootstrap/app.php` 声明可信代理,否则 `secure` cookie 与 `isSecure()` 会误判,影响 HTTPS 与会话安全。
- [ ] **依赖审计**:上线前执行 `composer audit` 并升级存在 CVE 的包。
- [ ] **后台安全增强**:管理员登录增加失败告警 / 锁定,条件允许时启用 2FA;对 `/admin` 异常访问做监控。
- [ ] **异常监控**:对批量联系提交、异常登录、5xx 突增配置告警。
### P2 · 可选增强
- [ ] **收紧 CSP**:将 Tailwind 改为构建产物 + 为内联脚本加 `nonce`,从而移除 `unsafe-inline`,把 XSS 防御从「依赖转义」升级为「双层防护」。
- [ ] **合规页面**:补充 `security.txt`、隐私政策与备案信息展示(页脚已预留 ICP / 公安备案位)。
- [ ] **外部资源 SRI**:若后续引入任何第三方脚本/样式,添加子资源完整性校验。
---
## 五、部署上线前必检清单
| 检查项 | 命令 / 位置 | 期望 |
| --- | --- | --- |
| 调试关闭 | `.env` `APP_DEBUG` | `false` |
| 环境 | `.env` `APP_ENV` | `production` |
| Cookie 安全 | `.env` `SESSION_SECURE_COOKIE` | `true` |
| APP_KEY | `php artisan key:generate`(如未生成) | 已设置且唯一 |
| 路由缓存 | `php artisan route:cache` | 无冲突 |
| 视图缓存 | `php artisan view:cache` | 编译通过 |
| 数据库迁移 | `php artisan migrate --force` | 成功 |
| 依赖审计 | `composer audit` | 无高危 |
| HTTPS | Web 服务器 / CDN | 已启用 + 跳转 |
| 静态资源软链 | `php artisan storage:link` | `/storage` 可访问 |
---
## 六、验证记录(本地)
| 页面 | 路由 | 状态码 |
| --- | --- | --- |
| 首页 | `/` | 200 |
| 关于我们 | `/about` | 200 |
| 产品服务 | `/products` | 200 |
| 联系我们 | `/contact` | 200 |
| 联系表单提交(带 CSRF | `POST /contact` | 200 `{"ok":true}` |
| 安全响应头 | 所有页面 | CSP / XFO / NoSniff / Referrer / Permissions 均已下发 |
---
*报告由 WorkBuddy 基于真实源码与本地运行结果生成,非泛泛模板。所有 P0 项均为部署配置,不依赖代码改动即可完成。*