- 对 https://cloud-chip.cn 做 curl 实测(速度+SEO/GEO)
- 关键发现:线上 JSON-LD 仍为旧 Organization、无 hreflang、产品页双品牌、security.txt/llms.txt 404 → 63431dd 审计修复未上线
- 速度:TTFB 0.12-0.17s(好),但 no-store 无缓存 + 外部 cdn.tailwindcss.com 拖累
- SEO/GEO 评级:当前 C-,正确部署后可达 B
- 在 docs/SECURITY_SEO_REMEDIATION.md 新增「上线实测扫描」章节含服务器修复命令
- CHANGELOG 新增 [1.0.1] 版本记录
13 KiB
安全 / SEO / GEO 修复跟踪(SECURITY_SEO_AUDIT 落地记录)
配套审计报告:IMA 知识库「网站测试」→
SECURITY_SEO_AUDIT.md(扫描 2026-08-06,对象 https://cloud-chip.cn)。 本文件记录每一项审计发现的处理状态、具体改动与验证方式,供未来接手的不同开发者直接使用。 版本日志见根目录CHANGELOG.md。
图例:✅ 已落地(代码) · ✔ 已核验(无需改) · ⏳ 待人工(后台/数据) · 🚫 工具限制 · 🔧 需云端/架构
状态总表
| ID | 优先级 | 发现 | 状态 | 处理 / 改动位置 |
|---|---|---|---|---|
| SEC-01 | P0 | CSP 含 unsafe-inline |
🔧 需架构 | 兼容 Tailwind Play CDN;须先完成 REL-03(构建 Tailwind + nonce)再移除,属重构,未动 |
| SEC-02 | P1 | 无 security.txt | ✅ 已落地 | 新增 public/.well-known/security.txt(白帽报送入口) |
| SEC-03 | P1 | 依赖 CVE 未知 | 🚫 工具限制 | 本机 composer 不支持 audit 命令;需升级 composer 或在 CI 跑 composer audit / composer outdated |
| SEC-04 | P1 | 生产 APP_DEBUG 未核实 | ✔ 已核验 | 本地 .env:APP_DEBUG=false / APP_ENV=production / SESSION_SECURE_COOKIE=true;需确认生产 .env 一致 |
| SEC-05 | P2 | 上传未做魔数校验 | ⏳ 待人工 | 现有 image + mimes:jpg,jpeg,png,gif,webp + max:5120 已具备;魔数校验可后续加 Intervention / finfo |
| SEC-06 | P2 | UGC 净化一致性 | ✔ 已具备 | config/purifier.php 双档(default / article);论坛/页脚走 Purifier::clean($html,'article') |
| REL-01 | P0 | 单源站无 CDN/WAF | 🔧 需云端 | 接入阿里云 CDN/Cloudflare;静态走 CDN、动态回源(运维操作) |
| REL-02 | P0 | 公开页 no-store |
🔧 需架构 | 当前全局 no-store 为避免 CSRF 419(每页含表单 token);建议经 CDN 边缘缓存(忽略 query + ESI)实现,未盲目放开 |
| REL-03 | P1 | 强依赖外部 Tailwind CDN | 🔧 需架构 | 改为构建期编译 Tailwind → public/css/app.css;同时解决 SEC-01;属重构,单独排期 |
| REL-04 | P1 | 500 页是否暴露堆栈 | ✔ 已核验 | APP_DEBUG=false 即不泄露;可补 resources/views/errors/500.blade.php(可选) |
| REL-05 | P2 | OpCache / 整页缓存 | 🔧 需云端 | 开 PHP OpCache;首页/栏目页短时长整页缓存(Redis/文件),运维+代码配合 |
| REL-06 | P2 | 大图未压缩/WebP | ⏳ 待人工 | 图片转 WebP、启用 gzip/brotli(运维+上传流程) |
| PHY-01 | P0 | 无边缘 DDoS/WAF | 🔧 需云端 | 上阿里云 DDoS 防护 + WAF(运维操作) |
| PHY-02 | P0 | 单 ECS 单点 | 🔧 需云端 | 定期快照 + 多实例 + SLB;数据库独立 RDS 并自动备份(运维操作) |
| PHY-03 | P1 | 备份未验证 | 🔧 需云端 | ECS 快照 + 库异地备份 + 恢复演练,保留 ≥30 天,记 RPO/RTO(运维操作) |
| PHY-04 | P2 | 无健康探活 | 🔧 需云端 | 云监控 + supervisor 守护 + 异常自动重启(运维操作) |
| SEO-01 | P0 | 首页 3 个 <h1> |
✔ 已核验(代码) | 全站区块已用 <h2>;首页 <h1> 来自 Hero 轮播富文本(DB),多屏则多 <h1>,属后台编辑规范(见下) |
| SEO-02 | P0 | 产品页标题品牌重复 | ✅ 已落地 | app/Models/Product.php::seoTitle() 去掉品牌后缀,视图统一 - $siteName |
| SEO-03 | P0 | 品牌命名三处不一致 | ⏳ 待人工(后台) | 代码默认 site_name=深圳市云创芯电子有限公司 已规范;线上「云创芯电子(你身边的PD顾问)」/「官网」后缀来自后台 site_name/seo_title_default,需改规范名 |
| SEO-04 | P1 | 首页 title 堆砌 | ⏳ 待人工(后台) | 代码默认 seo_title_default=深圳市云创芯电子有限公司 - 多口 TypeC 接口IC 已自然;线上堆砌版来自后台设置,需改自然表述 |
| SEO-05 | P1 | JSON-LD 仅 Organization | ✅ 已落地 | 布局加 WebSite+SearchAction;产品页 Product+BreadcrumbList;文章页 Article+BreadcrumbList |
| SEO-06 | P1 | 无 hreflang | ✅ 已落地 | 布局加 alternate 自引用(zh-CN / x-default) |
| SEO-07 | P2 | 图片 alt 未审计 | ⏳ 待人工 | 产品/方案配图补 alt(含关键词但自然),内容侧完善 |
| SEO-08 | P2 | 内链深度/锚文本 | ⏳ 待人工 | 重要页 ≤3 次点击可达 + 描述性锚文本,内容侧完善 |
| GEO-01 | P1 | 缺 FAQ/HowTo 结构化数据 | ⏳ 待人工 | 文章/产品页加 FAQPage/HowTo schema,内容侧完善 |
| GEO-02 | P1 | 品牌实体歧义 | ⏳ 待人工 | 同 SEO-03;Organization 的 sameAs 可指向官方主页/认证平台(代码可加,见备注) |
| GEO-03 | P2 | 缺作者/权威信号 | ✅ 已落地(部分) | 文章页 Article schema 已含 author/publisher/datePublished/dateModified |
| GEO-04 | P2 | 内容未直接作答 | ⏳ 待人工 | 术语/文章开头用 1–2 句直给定义,内容侧完善 |
| GEO-05 | P2 | 无 llms.txt | ✅ 已落地 | 新增 public/llms.txt |
| GEO-06 | P2 | 单语言限制 | ⏳ 待人工 | 同 SEO-06,英文版可扩展 AI 答案触达(需 URL 化多语言) |
已落地改动清单(代码)
-
SEO-02 —
app/Models/Product.phppublic function seoTitle(): string { return $this->seo_title ?: $this->name; // 仅实体名;品牌由视图统一追加 }视图
resources/views/products/show.blade.php:4:@section('title', $product->seoTitle() . ' - ' . $siteName) -
SEO-05 / GEO-03 — 结构化数据
resources/views/layouts/app.blade.php:Organization 之后新增WebSite+SearchAction(站内搜索url('/search')?q={search_term_string})。resources/views/products/show.blade.php:追加Product+BreadcrumbList(name/description/brand/url/category)。resources/views/articles/show.blade.php:追加Article+BreadcrumbList(headline/author/publisher/datePublished/dateModified/mainEntityOfPage)。- 均用
json_encode(..., JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_HEX_TAG)防 XSS 与</script>截断。
-
SEO-06 —
resources/views/layouts/app.blade.php<head>:<link rel="alternate" hreflang="zh-CN" href="{{ url()->current() }}"> <link rel="alternate" hreflang="x-default" href="{{ url('/') }}"> -
SEC-02 —
public/.well-known/security.txt(Contact / Expires / Preferred-Languages / Policy)。 -
GEO-05 —
public/llms.txt(站点说明 + 允许抓取栏目)。
待人工处理(后台 / 数据,非代码)
- SEO-01(首页多
<h1>):登录后台「外观 → 首页轮播」,编辑各屏富文本时只用<h2>作为屏内标题,全站仅首屏一个<h1>(或在富文本里不用 h1,由 Hero 文案样式承担视觉层级)。多屏都写 h1 会触发多个 h1。 - SEO-03(品牌名):后台「站点设置」将
site_name改为深圳市云创芯电子有限公司(对外简称可用云创芯电子,但全站统一);seo_title_default去掉「官网」后缀。 - SEO-04(首页 title):后台「站点设置」将
seo_title_default改为自然表述,例如云创芯电子 - 多口 TypeC 接口IC 与快充方案,去除「PD 接口顾问 拓展坞 视频扩展 端口扩展」式堆砌。 - GEO-02(sameAs):如需强化实体,可在
layouts/app.blade.php的 Organization JSON-LD 增加"sameAs": ["https://..."]指向官方认证平台。 - SEC-05 / REL-06 / SEO-07 / SEO-08 / GEO-01 / GEO-04:内容/上传流程侧持续完善。
上线自检(curl 清单)
# 安全头(应含 CSP / X-Frame-Options / nosniff / Referrer-Policy / HSTS)
curl -sS -I https://cloud-chip.cn/ | grep -iE 'content-security-policy|x-frame|x-content|strict-transport|referrer'
# security.txt 可达
curl -sS -o /dev/null -w 'security.txt=%{http_code}\n' https://cloud-chip.cn/.well-known/security.txt
# llms.txt 可达
curl -sS -o /dev/null -w 'llms.txt=%{http_code}\n' https://cloud-chip.cn/llms.txt
# 产品页标题不应再重复品牌
curl -sS https://cloud-chip.cn/products/cc-pd3168 | grep -iE '<title>'
# 首页 h1 数量(应为 1;若 >1 回到后台改 Hero 富文本)
curl -sS https://cloud-chip.cn/ | grep -c '<h1'
# JSON-LD 含 WebSite / Product / Article
curl -sS https://cloud-chip.cn/ | grep -c 'WebSite'
curl -sS https://cloud-chip.cn/products/cc-pd3168 | grep -c '"@type":"Product"'
curl -sS https://cloud-chip.cn/articles/<某slug> | grep -c '"@type":"Article"'
# hreflang 自引用
curl -sS https://cloud-chip.cn/ | grep -iE 'hreflang'
# sitemap 完整性(应 49 条 <loc>)
curl -sS https://cloud-chip.cn/sitemap.xml | grep -c '<loc>'
# 敏感路径不应暴露
for p in /.env /phpinfo.php; do echo "$p -> $(curl -sS -o /dev/null -w '%{http_code}' https://cloud-chip.cn$p)"; done
上线实测扫描(2026-08-08 23:4x,curl 直连 https://cloud-chip.cn)
目的:复核
63431dd审计修复是否在生产环境真正生效。结论:未生效——生产部署为陈旧版本。
⚠️ 关键发现:部署陈旧,修复未上线
对线上 HTML/响应头逐项目核验,证明服务器当前运行的是 63431dd 之前的代码:
| 验证点 | 预期(63431dd 后) | 线上实测 | 结论 |
|---|---|---|---|
| 首页 JSON-LD | WebSite+SearchAction |
仍是旧 Organization |
❌ 旧代码 |
| 首页 hreflang | zh-CN / x-default |
完全缺失 | ❌ 旧布局 |
| 产品页标题 | 单品牌 … - 深圳市…有限公司 |
… - 深圳市云创芯电子有限公司 - 深圳市云创芯电子有限公司官网(双品牌) |
❌ 旧 Product::seoTitle() |
/.well-known/security.txt |
200 | 404(nginx 直返,文件不在服务器) | ❌ 文件缺失 |
/llms.txt |
200 | 404 | ❌ 文件缺失 |
代码历史已同步(HEAD == origin/main == bc817bf,含 63431dd),故问题在服务器工作树/运行时未更新。
根因(二选一或并存)
- 服务器 checkout 停留在旧提交:
git pull因此前「实时更新」自动提交造成的 origin 分歧而失败/未快进,工作树停在63431dd之前。 - OPcache + 陈旧编译视图:即便磁盘已是新文件,若 PHP-FPM 的 OPcache
validate_timestamps=Off且部署后未重载,旧字节码(含旧Product.php、旧编译 Blade)继续服务;.well-known文件缺失则指向根因 1。
服务器修复命令(在 /www/wwwroot/cloud-chip.cn 执行)
cd /www/wwwroot/cloud-chip.cn
git fetch origin
git reset --hard origin/main # 强制对齐最新提交(含 63431dd + security.txt/llms.txt)
php artisan view:clear # 清陈旧编译视图
php artisan config:clear
php artisan route:clear
php artisan optimize:clear
# 重载 PHP-FPM 刷新 OPcache(宝塔中对应 PHP 版本,如 8.3)
# 宝塔面板:软件商店 → PHP-8.3 → 重载;或:
# service php-fpm-83 reload # 视实际服务名调整
修复后用下方命令复核(应全部命中):
curl -s https://cloud-chip.cn/ | grep -oE '"@type": ?"WebSite"|hreflang="zh-CN"'
curl -s -o /dev/null -w '%{http_code}\n' https://cloud-chip.cn/.well-known/security.txt # 期望 200
curl -s -o /dev/null -w '%{http_code}\n' https://cloud-chip.cn/llms.txt # 期望 200
curl -s https://cloud-chip.cn/products/cc-pd3168 | grep -oE '<title>[^<]*</title>' # 应只含一个品牌
若 security.txt/llms.txt 仍 404,需确认 nginx 是否拦截 .well-known(加 location ~ /\.well-known/ { access_log off; } 或确保 root 指向 public)。
速度实测(2026-08-08)
| 指标 | 结果 | 评价 |
|---|---|---|
| 首页 TTFB(热) | 0.17s(冷启动曾 1.5s,仅首次) | ✅ 好 |
| 子页面 TTFB | 0.12–0.13s | ✅ 好 |
| gzip | 已开启 | ✅ |
| Cache-Control | 全程 no-store |
❌ 无缓存(REL-02) |
| 外部依赖 | cdn.tailwindcss.com(Tailwind Play CDN,渲染阻塞) |
❌ 拖慢首屏 + SEC-01 根因 |
| CDN | 无(直连杭州源站 47.107.30.116) | ❌ 异地延迟(REL-01) |
| 图片 alt | 3/3 有 alt | ✅ |
SEO/GEO 当前评级(线上=陈旧版,修复未生效)
- 安全响应头:A(HSTS/CSP/X-Frame-Options 等已生效,这些早于本次修复即存在)
- 结构化数据:C(仅 Organization,缺 WebSite/Product/Article/Breadcrumb)
- hreflang:F(缺失)
- 标题规范:D(关键词堆砌 + 双品牌 + 品牌名不一致「云创芯电子」vs「深圳市云创芯电子有限公司」)
- sitemap / robots:A(均 200)
- security.txt / llms.txt:F(404)
- 速度:B(延迟好,但无缓存+外部 CDN 拖累)
- 综合 SEO/GEO:当前 ≈ C-(基线);待正确部署
63431dd后可达 B(良好基础),但要到 A 仍需解决标题规范(后台设置)、多 h1(内容编辑)、CSP unsafe-inline(Tailwind 构建化)、no-store 缓存、CDN 等遗留项。
备注
- 本文件与
CHANGELOG.md需随代码一起提交,确保后续开发者在仓库内即可看到。 - 状态符号会随修复推进更新;请勿删除「Deferred / 待人工」项,它们是对未来开发者的明确待办。
- 2026-08-08 实测发现生产部署未包含
63431dd,见上「上线实测扫描」章节——修复命令已给出,部署后务必用所列 curl 复核。