本系统用于演示软件授权机制,采用 64位随机激活码 + 数据库状态管理 方案,兼顾安全性与易用性,适用于新生攻防教学实验。
🔧 系统架构
- 前端:H5 页面(
index.html) - 后端:PHP 脚本(
generate.php/verify.php) - 数据库:MySQL 表
activation_keys - 通信协议:HTTP + JSON
- 激活码格式:64 个字符,由大小写字母和数字组成(如
aB3xK9...Lm2Q)
🗝️ 1. 生成激活码
请求方式
GET /api/activation/generate.php?product=产品ID&email=邮箱(可选)
参数说明
| 参数 | 必填 | 示例 | 说明 |
|---|---|---|---|
product |
是 | GAME_2025 |
产品标识 |
email |
否 | user@holytreasure.cn |
关联用户邮箱 |
成功响应(纯文本)
k7LmN9pQrStUvWxYzA1B2C3D4E5F6G7H8J9K0LmNoPqRsTuVwXyZaBcDeFgHiJk
- 长度严格为 64 字符
- 有效期:30 天
- 状态:
unused(未激活)
错误示例
400 Bad Request:缺少product参数
🔐 2. 验证并激活
请求方式
POST /api/activation/verify.php
请求体(JSON)
{
"activation_key": "k7LmN9pQrStUvWxYzA1B2C3D4E5F6G7H8J9K0LmNoPqRsTuVwXyZaBcDeFgHiJk"
}
成功响应(JSON)
{
"status": "success",
"product": "GAME_2025",
"expires_at": "2026-01-24 14:30:00"
}
失败响应(统一返回 403)
{ "error": "Key not available" }
可能原因:
- 激活码不存在
- 已使用
- 已过期
- 格式错误(非64字符)
✅ 所有失败均返回相同错误信息,防止信息探测。
🗃️ 数据库表结构
CREATE TABLE `activation_keys` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`activation_key` CHAR(64) NOT NULL UNIQUE COMMENT '64位激活码',
`product` VARCHAR(100) NOT NULL,
`email` VARCHAR(255) DEFAULT NULL,
`expires_at` DATETIME NOT NULL,
`status` ENUM('unused', 'activated', 'revoked') NOT NULL DEFAULT 'unused',
`activated_at` DATETIME NULL DEFAULT NULL,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
INDEX `idx_key` (`activation_key`),
INDEX `idx_status` (`status`),
INDEX `idx_product_status` (`product`, `status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
🛡️ 安全设计要点(教学重点)
| 特性 | 说明 |
|---|---|
| 64位随机码 | 熵值高(≈380 bits),无法暴力破解 |
| 一次性使用 | 激活后状态变为 activated,不可复用 |
| 有效期控制 | 默认30天,过期自动失效 |
| 无客户端逻辑 | 所有验证在服务端完成 |
| 防重放攻击 | 数据库状态 + 唯一索引保障 |
| 统一错误反馈 | 避免泄露密钥是否存在 |
🧪 教学实验建议
| 实验目标 | 操作 |
|---|---|
| 观察激活流程 | 生成 → 验证 → 查看数据库状态变化 |
| 尝试重复激活 | 对同一密钥多次调用 /verify.php |
| 篡改密钥 | 修改任意字符,观察验证失败 |
| 探测密钥存在性 | 发送随机64字符,确认是否泄露信息 |
| 抓包分析 | 用 Burp Suite 拦截请求,测试重放 |
📌 注意事项
- 本系统仅用于教学,不可用于生产环境。
- 前端调用时请使用
.php后缀(如generate.php)。 - 确保 Web 服务器可读取
config/db.php。 - 激活码区分大小写,请完整复制。
📘 HolyTreasure 靶场 · 网络安全教学专用
🔗 访问地址:http://activation_system.holytreasure.cn
如需配套的 H5 页面、PHP 脚本或初始化脚本,可联系管理员获取。