# keygenl-php **Repository Path**: iskyx/keygenl-php ## Basic Information - **Project Name**: keygenl-php - **Description**: 一个有趣的适合个人的在线密码本 - **Primary Language**: PHP - **License**: AGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-07 - **Last Updated**: 2026-05-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 在线密码本 一个基于PHP和SQLite的在线密码管理程序,支持移动端访问,采用PDO预处理防止SQL注入攻击。 ## 功能特性 - 安全的密码存储(AES-256-CBC加密) - 用户登录认证 - CSRF防护 - XSS防护 - 响应式设计,支持移动端 - 搜索功能 - 密码生成器 - 一键复制密码 - 分页显示 ## 系统要求 - PHP 8.3 或更高版本 - SQLite3 扩展 - OpenSSL 扩展 - Web服务器(Apache/Nginx) ## 安装步骤 1. **上传文件到Web服务器** ``` 将所有文件上传到您的Web服务器目录 ``` 2. **设置权限** ```bash chmod 755 data/ # 确保Web服务器可以写入data目录 ``` 3. **访问安装页面** ``` 在浏览器中访问: http://your-domain.com/index.php 检查扩展是否符合要求 ``` 4. **创建管理员账户** - 输入用户名和密码 - 点击"开始安装" 5. **开始使用** - 安装完成后会自动跳转到登录页面 - 使用创建的管理员账户登录 ## 文件说明 - `index.php` - 程序入口和路由分发 - `sqlite.php` - SQLite数据库操作封装类(含详细注释) - `install.php` - 安装向导页面 - `function.php` - 业务逻辑函数库 - `login.php` - 登录页面模板 - `main.php` - 主页面模板 - `data/` - 数据存储目录(自动创建) ## 安全特性 ### 1. SQL注入防护 - 使用PDO预处理语句 - 所有数据库查询都使用参数绑定 - 禁用模拟预处理(`PDO::ATTR_EMULATE_PREPARES => false`) ### 2. XSS防护 - 所有输出都经过`htmlspecialchars()`转义 - 提供`h()`辅助函数统一处理 ### 3. CSRF防护 - 每个表单都包含CSRF令牌 - 使用`hash_equals()`进行安全比较 ### 4. 密码安全 - 用户密码使用`password_hash()` bcrypt加密 - 密保密码使用AES-256-CBC加密存储 - 随机密码生成使用`random_int()`加密安全函数 ### 5. 会话安全 - 安全的会话管理 - 登出时完全销毁会话 ### 6. 数据库文件保护 - **随机文件名**:数据库文件使用32位随机字符串命名,防止猜测 - **伪装扩展名**:使用.dat扩展名而非.db,降低被识别风险 - **.htaccess保护**:Apache服务器通过.htaccess禁止直接访问 - **Nginx配置**:提供Nginx配置示例,禁止访问data目录 - **目录索引保护**:data目录下index.php返回403错误 - **自动路径生成**:安装时自动生成安全的数据库文件路径 ## 使用说明 ### 添加新条目 1. 点击"添加新条目"按钮 2. 填写标题、用户名、密码等信息 3. 可点击"生成密码"自动生成强密码 4. 点击"保存" ###其他安全配置 Apache服务器添加以下屏蔽配置 AllowOverride All Nginx添加以下安全配置 # Nginx配置示例 - 保护数据库文件 # 将此配置添加到您的Nginx服务器配置中 # 禁止访问data目录 location /data/ { deny all; return 403; } # 禁止访问.db、.sqlite、.sqlite3、.dat文件 location ~* \.(db|sqlite|sqlite3|dat)$ { deny all; return 403; } # 禁止隐藏文件访问 location ~ /\. { deny all; return 403; } ### 查看密码 - 默认密码显示为掩码(••••••••) - 点击"显示"按钮可查看明文 - 点击"复制"按钮可复制到剪贴板 ### 编辑条目 1. 点击条目右上角的"编辑"按钮 2. 修改相关信息 3. 密码字段留空表示不修改 4. 点击"保存" ### 删除条目 1. 点击条目右上角的"删除"按钮 2. 在确认对话框中点击"确认删除" ### 搜索条目 - 在搜索框中输入关键词 - 支持搜索标题、用户名、网址 ## 移动端适配 程序采用响应式设计,在各种移动设备上都能正常显示: - 自适应布局 - 触摸友好的按钮尺寸 - 优化的表单输入 - 支持各种屏幕尺寸 ## 注意事项 1. **定期备份**:请定期备份`data/`目录下的数据库文件(文件名随机生成) 2. **HTTPS建议**:生产环境建议使用HTTPS协议 3. **密钥管理**:如需修改加密密钥,请修改`sqlite.php`中的密钥字符串 4. **不要删除install.php**:虽然已安装后会自动跳转,但建议保留该文件 5. **服务器配置**: - **Apache用户**:确保.htaccess文件生效(AllowOverride All) - **Nginx用户**:参考nginx.conf.example配置,禁止访问data目录 6. **数据库文件保护**:数据库文件使用随机文件名和.dat扩展名,防止直接访问 ## 技术栈 - **后端**: PHP 8.3 - **数据库**: SQLite3 - **前端**: HTML5 + CSS3 + JavaScript - **加密**: OpenSSL (AES-256-CBC) - **哈希**: bcrypt (password_hash) ## 许可证 AGPL-3