输入参数怎样验证?
id、article、collection 和人物 ID 使用整数验证并限制范围;category、genre、mood、area、year、language、status 与 sort 通过已知值白名单;搜索关键词和 slug 会去除标签并限制长度。无效的筛选参数回到安全默认值,不存在的资源 ID 则返回 404。
输出怎样避免把内容当成 HTML 执行?
所有普通文本统一通过 e() 使用 htmlspecialchars,并启用 ENT_QUOTES 与 UTF-8。用户输入不会直接拼进脚本或未转义 HTML。JSON-LD 则由 json_encode 生成并启用 JSON_HEX 系列选项,减少结构化数据中意外闭合标签的风险。
播放器允许什么,不允许什么?
播放器只读取数据里预先定义的两个本地演示文件,不接收任意 URL 参数作为媒体地址。线路参数只是 0 或 1 的整数索引,无法把外部链接塞进 video source。站点明确不实现影视采集、爬虫、盗链、视频解析、DRM 绕过、付费绕过、会员破解或地域限制绕过。
链接为什么尽量使用真实站内地址?
主要 CTA 都指向实际存在的 PHP 页面或可验证的站内 GET 路由,不使用空 href、javascript:void(0) 或仅为了点击效果存在的假链接。打开搜索、目录和本地状态面板的交互使用 button 元素,并设置 aria 属性,而不是把按钮伪装成无效链接。
JavaScript 失效会怎样?
频道、首页、分类、详情、文章和主要服务正文均由 PHP 服务端输出。没有脚本时,普通导航和筛选仍能使用,video 原生 controls 仍在,横向轨道中的卡片会自然可见。受影响的主要是收藏、历史面板、FAQ 折叠和增强播放器按钮,这些功能不会阻断核心内容。
部署者还需要做什么?
源码提供基础 .htaccess 与内容安全边界,但真实主机还应保持 PHP 版本更新、正确设置文件权限、关闭生产环境错误直接输出,并通过 Web 服务器配置 HTTPS、安全响应头与日志策略。图片和演示媒体不在 ZIP 中,补充资源时也需要检查文件来源与访问权限。
为什么错误页也要按正常页面检查?
404、空搜索和媒体错误往往最容易暴露未定义变量或路径假设,因此验收时不能只打开首页。不存在的详情 ID 应返回真正的 404 状态,同时仍能安全输出品牌导航与返回入口;空搜索不展开全部片库;播放器文件缺失时只显示错误状态,不尝试未知来源。把这些失败路径与正常页面一起检查,才能确认“安全回退”不是一句文案,而是实际运行行为。

