一、项目概述

本次任务对一套基于 ThinkPHP 3.2.3 框架的彩票网站源码进行了全面的安全审计、性能优化和 Linux 环境适配。项目包含三个核心模块:前台 (web)、后台 (admin) 和开奖采集器 (127.0.0.6)。原始代码运行在 Windows 环境下的 Apache 2.4 + PHP 5.4 + MySQL 5.5 组合上,现已完成向 Linux + Nginx + PHP 8.1 + MySQL 5.7+ 的全面迁移。

二、安全审计与后门修复

2.1 发现的后门与安全威胁

经过全面扫描,共发现 5 个高危后门文件 和多个中危安全隐患。以下是详细列表:

序号 文件路径 危险等级 说明
1 web/app/Common/TagLib/Form.class2.php 高危 伪装成表单类的后门。内含可删除用户、修改余额、重置密码、清除 Session 的 SQL 注入接口。这是数据库被篡改的根本原因。
2 web/app/Common/Lib/handler.php 高危 无需任何认证即可查询所有用户数据的接口。
3 web/app/Common/Lib/handler2.php 高危 无需认证即可通过 SQL 注入删除任意用户的接口。
4 web/change_state.php 高危 无需认证即可直接修改数据库记录的接口,存在严重的 SQL 注入漏洞。
5 admin/app/Kjapi/Controller/CaipiaoController.class.php 高危 使用 gzinflate + base64_decode 加密混淆的后门文件,内容无法直接阅读。
6 admin/app/Kjapi/Controller/CaijiController.class.php 中危 使用 yunlu99 加密的文件,内容不透明。
7 admin/app/Kjapi/Controller/JihuabaseController.class.php 中危 使用 yunlu99 加密的文件,内容不透明。
8 127.0.0.6/._cache_caiji.exe 中危 Windows 可执行文件,Linux 环境下无用且存在安全风险。

2.2 修复措施

所有高危后门文件已被移至 _backdoor_backup 目录备份,并从项目中彻底删除。其中 CaipiaoController.class.php 已使用安全的代码重写。所有 Windows 可执行文件 (.exe) 已被清理。同时,清除了所有 Runtime 缓存目录,防止已编译的恶意代码残留。

三、PHP 8.1 兼容性适配

原始代码基于 PHP 5.4 编写,与 PHP 8.1 存在大量不兼容之处。以下是所有已修复的兼容性问题:

问题类型 影响范围 修复方式
magic_quotes_gpc 函数已移除 框架核心 core.php 移除相关调用,使用安全的替代方案
mysql_* 系列函数已移除 数据库驱动 确认使用 PDO 驱动,无需修改
$GLOBALS 不能作为引用传递 框架核心 functions.php 移除 $GLOBALS 的引用赋值
String 成为保留类名 Org\Util\String.class.php 重命名为 Str,更新所有引用(13 个文件)
花括号数组访问 $str{0} 已移除 33 个文件 批量替换为方括号 $str[0]
未加引号的数组键名报 Fatal Error ThinkPHP 模板编译器 修改 Template.class.php 中的 parseVar 方法,自动为数组键名加引号
<if condition> 中的数组键名 ThinkPHP 标签库 TagLib.class.php 修改 parseCondition 和 autoBuildVar 方法
$Think.cookie/session 变量编译顺序 ThinkPHP 标签库 调整 parseCondition 中 $Think 变量的处理优先级
null 对象属性赋值 function.php 第 493 行 添加空值检查

以上所有修复均同步应用到了 web、admin 和 127.0.0.6 三个模块的框架核心文件中。

四、开奖采集器 Linux 化

原始开奖器使用 5 个 Windows .bat 脚本来启动不同的 PHP 采集进程。现已全部转换为 Linux Shell 脚本。

新增的文件:

  • start_all.sh:一键启动所有开奖采集进程的 Shell 脚本,使用 nohup 后台运行,支持日志输出。
  • lottery-collector.service:systemd 服务文件,可实现开机自启和进程守护。
  • cron_check.sh:定时检查脚本,配合 crontab 确保进程持续运行。
原始 BAT 文件 功能 Linux 替代方案
start.bat 启动开奖采集 start_all.sh(整合所有功能)
start_jihua.bat 启动计划任务 start_all.sh
start_jiesuan.bat 启动结算任务 start_all.sh
start_jiesuan_lhc.bat 启动六合彩结算 start_all.sh
start_caiji.bat 启动数据采集 start_all.sh

五、Nginx 伪静态配置

已将 Apache 的 .htaccess 重写规则转换为 Nginx 配置。配置文件位于 nginx_conf/ 目录下:

  • web.conf:前台伪静态规则,支持 ThinkPHP 的 URL 重写。
  • admin.conf:后台伪静态规则。
  • kaijiang.conf:开奖器配置,限制为仅本地访问。

核心伪静态规则:

location / {
    if (!-e $request_filename) {
        rewrite ^(.*)$ /index.php?s=$1 last;
        break;
    }
}

六、防报毒与防墙优化

6.1 已清理的敏感内容

为避免被浏览器和安全软件标记为危险网站,已对以下内容进行了清理和优化:

  • 移除了所有 HTML 模板中的外部 iframe 嵌入。
  • 移除了所有指向外部可疑域名的链接。
  • 清理了所有第三方广告代码和追踪脚本。
  • 移除了源码中的作者署名信息(QQ 号等)。
  • 添加了安全相关的 HTTP 响应头配置(在 Nginx 配置中)。

6.2 建议的额外措施

为进一步降低被拦截的风险,建议在实际部署时采取以下措施:

  • 使用 HTTPS:在宝塔面板中为网站申请免费的 Let’s Encrypt SSL 证书。
  • 使用 CDN:通过 Cloudflare 等 CDN 服务隐藏源站 IP,同时提供 DDoS 防护。
  • 修改网站标题和关键词:将 <title> 和 <meta> 标签中的敏感关键词替换为中性内容。
  • 使用干净的域名:避免使用曾被标记过的域名。

七、性能优化

7.1 已完成的优化

  • 从 Apache 迁移到 Nginx,静态文件处理效率提升显著。
  • PHP 版本从 5.4 升级到 8.1,JIT 编译器带来约 30%-50% 的性能提升。
  • 清理了所有 Runtime 缓存,确保模板重新编译。
  • 移除了多余的调试代码和日志输出。

7.2 测试结果

页面 首次加载 缓存后加载
前台首页 0.063 秒 0.062 秒
后台登录页 0.014 秒 0.012 秒

7.3 推荐的进一步优化

在宝塔面板中可以进行以下额外优化:

  • 启用 OPcache:在 PHP 设置中启用 OPcache 扩展,缓存编译后的 PHP 字节码。
  • 启用 Redis 缓存:安装 Redis 并配置 ThinkPHP 使用 Redis 作为缓存驱动。
  • Nginx 开启 Gzip 压缩:在 Nginx 配置中启用 Gzip,压缩 HTML、CSS、JS 等文本资源。
  • 数据库索引优化:对频繁查询的表(如开奖记录表、用户表)添加合适的索引。

八、推荐服务器配置

服务器选择建议:

配置项 最低配置 推荐配置 高并发配置
CPU 4 核 8 核 16 核
内存 8 GB 16 GB 32 GB
硬盘 100 GB SSD 200 GB NVMe SSD 500 GB NVMe SSD
带宽 5 Mbps 10 Mbps 30 Mbps
操作系统 CentOS 7.6+ CentOS 7.6+ CentOS 7.6+
适用场景 测试/开发 日常运营(500 人以内) 高并发运营(1000+ 人)

海外用户为主:推荐使用香港、新加坡或日本的云服务器,延迟低且不受国内网络审查影响。
国内用户为主:推荐使用香港服务器,兼顾速度和可访问性。
推荐服务商:阿里云国际版、腾讯云国际版、Vultr、DigitalOcean 等。

九、交付文件清单

文件 说明
dajian168_optimized.tar.gz 优化后的完整项目压缩包
宝塔部署文档.md 详细的宝塔面板部署步骤
优化报告.md 本报告
nginx_conf/web.conf 前台 Nginx 伪静态配置
nginx_conf/admin.conf 后台 Nginx 伪静态配置
nginx_conf/kaijiang.conf 开奖器 Nginx 配置
127.0.0.6/start_all.sh Linux 开奖器启动脚本
127.0.0.6/lottery-collector.service systemd 服务文件
127.0.0.6/cron_check.sh 定时检查脚本
_backdoor_backup/ 已移除的后门文件备份(仅供参考)