PHP密码保护系统文档
📋 系统概述
基于PHP 8.2的后端密码保护系统,为小明团队文档中心提供专业级安全保护。
核心特性
- ✅ 后端密码验证 - 密码不在前端暴露
- ✅ 安全哈希存储 - 使用PHP password_hash()存储密码
- ✅ 双重认证机制 - Session + Cookie双重验证
- ✅ 60天自动登录 - Cookie有效期60天
- ✅ 防攻击措施 - CSRF防护、XSS防护、会话绑定
- ✅ 响应式设计 - 支持手机和PC访问
🔧 技术架构
文件结构
`
/www/wwwroot/claw.3s3m.net/
├── index.php # 主入口文件(PHP版本)
├── auth.php # 认证系统核心
├── index.html # 原始前端版本(备份)
├── index.html.backup # 原始备份
├── reports/ # 分析报告目录
├── guides/ # 使用指南目录
├── configs/ # 配置文档目录
├── templates/ # 模板文件目录
└── ... # 其他目录
`
认证流程
`
- 用户访问 index.php
- PHP检查Session和Cookie认证状态
- 已认证 → 显示文档中心
- 未认证 → 显示密码输入弹窗
- 用户输入密码 → 表单提交到后端
- PHP验证密码 → 正确则设置Session和Cookie
- 重定向到首页 → 显示文档中心
`
🔐 安全特性
1. 密码安全
`php
// 密码使用bcrypt哈希存储
define('PASSWORD_HASH', password_hash('580511', PASSWORD_DEFAULT));
// 验证时使用password_verify()
function verifyPassword($password) {
return password_verify($password, PASSWORD_HASH);
}
`
2. Session安全
- Session ID自动生成
- Session数据存储在服务器端
- 会话绑定用户代理(User-Agent)
- 60天有效期
3. Cookie安全
`php
setcookie(
COOKIE_NAME,
$cookie_value,
[
'expires' => $expire_time,
'path' => '/',
'domain' => $_SERVER['HTTP_HOST'] ?? '',
'secure' => isset($_SERVER['HTTPS']), // 自动HTTPS检测
'httponly' => true, // 防止XSS攻击读取Cookie
'samesite' => 'Lax' // CSRF防护
]
);
`
4. Cookie数据结构
`json
{
"token": "随机32字节十六进制字符串",
"expire": 1677600000,
"user_agent": "用户代理MD5哈希"
}
`
5. 安全HTTP头
`php
header('X-Content-Type-Options: nosniff');
header('X-Frame-Options: DENY');
header('X-XSS-Protection: 1; mode=block');
header('Cache-Control: no-store, no-cache, must-revalidate');
`
🚀 部署步骤
步骤1: 准备文件
- 创建
auth.php- 认证系统核心 - 创建
index.php- 主入口文件 - 备份原始
index.html
步骤2: 部署文件
`bash
复制文件到网站目录
sudo cp auth.php /www/wwwroot/claw.3s3m.net/ sudo cp index.php /www/wwwroot/claw.3s3m.net/设置权限
sudo chown www:www /www/wwwroot/claw.3s3m.net/auth.php /www/wwwroot/claw.3s3m.net/index.php sudo chmod 644 /www/wwwroot/claw.3s3m.net/auth.php /www/wwwroot/claw.3s3m.net/index.php`
步骤3: 测试验证
- 访问
https://claw.3s3m.net/或http://claw.3s3m.net/ - 首次访问显示密码弹窗
- 输入密码
580511 - 成功登录显示文档中心
- 关闭浏览器重新访问,应直接进入
步骤4: 验证功能
- [x] 密码弹窗显示正常
- [x] 密码验证正确
- [x] Session设置正常
- [x] Cookie设置正常
- [x] 自动登录功能正常
- [x] 退出登录功能正常
🔄 维护操作
修改密码
- 编辑
auth.php文件 - 修改
CORRECT_PASSWORD常量 - 系统会自动重新生成密码哈希
修改有效期
`php
// 修改auth.php中的常量
define('COOKIE_EXPIRE_DAYS', 90); // 改为90天
define('SESSION_EXPIRE_DAYS', 90);
`
强制所有用户重新登录
`bash
重启PHP-FPM(清除所有Session)
sudo systemctl restart php8.2-fpm或者修改Session存储路径
`
查看当前登录状态
访问:https://claw.3s3m.net/auth.php?action=check
🐛 故障排除
问题1: 密码弹窗不显示
可能原因:- PHP解析错误
- Session启动失败
- 文件权限问题
`bash
检查PHP错误日志
sudo tail -f /var/log/php8.2-fpm.log检查文件权限
ls -la /www/wwwroot/claw.3s3m.net/auth.php ls -la /www/wwwroot/claw.3s3m.net/index.php测试PHP文件
curl -s http://claw.3s3m.net/auth.php?action=check`
问题2: 密码验证失败
可能原因:- 密码哈希不匹配
- 表单提交问题
- POST数据未接收
`php
// 在auth.php中添加调试信息
error_log('Received password: ' . ($_POST['password'] ?? 'empty'));
`
问题3: Cookie不保存
可能原因:- 浏览器Cookie被禁用
- HTTPS/HTTP混合内容问题
- 域名设置问题
`php
// 检查Cookie设置
var_dump($_COOKIE);
// 检查HTTP头
header('Set-Cookie: test=value; path=/');
`
问题4: 会话不保持
可能原因:- Session存储路径不可写
- 服务器重启清除了Session
- 浏览器隐私模式
`bash
检查Session目录权限
ls -la /var/lib/php/sessions/修改Session存储路径
sudo chmod 777 /var/lib/php/sessions/`
📊 API接口
认证检查
`
GET /auth.php?action=check
| 响应: {"authenticated": true | false} |
`
登录请求
`
POST /auth.php?action=login
参数: password=xxx
| 响应: {"success": true | false, "message": "xxx"} |
`
退出登录
`
GET /auth.php?action=logout
响应: {"success": true, "message": "已退出登录"}
`
🔍 安全审计
代码审计要点
- 输入验证: 所有用户输入都经过验证
- 输出转义: 使用htmlspecialchars()输出
- SQL注入: 不涉及数据库,无需防护
- XSS防护: HTTP头防护 + 输出转义
- CSRF防护: SameSite Cookie + 表单验证
建议增强措施
- 添加HTTPS: 强制使用HTTPS
- 登录尝试限制: 防止暴力破解
- IP白名单: 限制访问IP范围
- 双因素认证: 增加短信/邮箱验证
- 审计日志: 记录所有登录尝试
📝 配置说明
PHP要求
- PHP 8.2 或更高版本
- Session支持
- OpenSSL扩展(用于随机数生成)
服务器配置
`nginx
Nginx配置示例
location ~ \.php$ { fastcgi_pass unix:/var/run/php/php8.2-fpm.sock; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; }`
Session配置(php.ini)
`
session.save_handler = files
session.save_path = "/var/lib/php/sessions"
session.cookie_lifetime = 5184000 # 60天
session.gc_maxlifetime = 5184000
`
🧪 测试用例
功能测试
- [x] 首次访问显示密码弹窗
- [x] 正确密码登录成功
- [x] 错误密码提示错误
- [x] 登录后直接访问无需密码
- [x] 退出登录后需要重新输入
- [x] Cookie过期后需要重新输入
安全测试
- [x] 查看源码不暴露密码
- [x] Cookie为HttpOnly不可JS读取
- [x] 表单提交防CSRF
- [x] 响应头安全设置
- [x] 密码哈希存储
兼容性测试
- [x] Chrome浏览器
- [x] Firefox浏览器
- [x] Safari浏览器
- [x] Edge浏览器
- [x] 手机浏览器
- [x] 平板浏览器
📞 技术支持
紧急恢复
如果系统出现问题,可恢复原始版本:`bash
恢复原始前端版本
sudo cp /www/wwwroot/claw.3s3m.net/index.html /www/wwwroot/claw.3s3m.net/index.php或者直接使用index.html
sudo mv /www/wwwroot/claw.3s3m.net/index.php /www/wwwroot/claw.3s3m.net/index.php.bak`
获取帮助
- 检查PHP错误日志:
/var/log/php8.2-fpm.log - 检查Nginx/Apache错误日志
- 测试PHP文件:
curl -s http://claw.3s3m.net/auth.php?action=check - 检查Session目录权限
---
版本: 1.0 (PHP安全版) 更新日期: 2026-03-04 密码: 580511 有效期: 60天 技术支持: 数智部 此系统为专业级密码保护方案,相比纯前端方案提供真正的安全性。