|
|
před 2 měsíci | |
|---|---|---|
| public | před 2 měsíci | |
| src | před 2 měsíci | |
| .htaccess | před 2 měsíci | |
| LICENSE | před 2 měsíci | |
| README.md | před 2 měsíci | |
| config.php | před 2 měsíci | |
| db_init.php | před 2 měsíci | |
| init.php | před 2 měsíci |
bcjd.net 服务导航页面(PHP + MariaDB 版)
/ 聚焦搜索框,回车打开第一个结果git clone https://github.com/你的用户名/bcjd-html.git /var/www/html
# 或上传至服务器后解压
项目根目录不应作为 Web 入口。必须将 public/ 目录设为服务器 DocumentRoot。
编辑 Apache 站点配置(如 /etc/apache2/sites-available/bcjd.conf):
<VirtualHost *:80>
ServerName bcjd.net
DocumentRoot /var/www/html/bcjd-html/public
<Directory /var/www/html/bcjd-html/public>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
或者使用符号链接:
# ln -s /var/www/html/bcjd-html/public /var/www/html/你的Web目录
编辑 config.php,修改以下参数:
define('DB_HOST', 'localhost');
define('DB_NAME', 'bcjd_nav');
define('DB_USER', '你的数据库用户名');
define('DB_PASS', '你的数据库密码');
在浏览器访问 http://你的域名/db_init.php
脚本会自动创建数据库和表结构,并导入默认链接数据。
⚠️ 初始化完成后,请删除或重命名 db_init.php 文件以保证安全。
⚠️ .htaccess 已自动禁止通过 Web 访问 db_init.php,如需使用请临时修改规则。
默认密码为 bcjd2025。
登录后访问 http://你的域名/admin.php →「修改密码」选项卡修改。
bcjd-html/ # 项目根目录(不对外暴露)
├── .htaccess # 顶层安全防护(禁止访问敏感文件/目录)
├── config.php # 数据库 & 密码配置
├── db_init.php # 数据库初始化脚本(用完删除)
├── init.php # 系统引导(自动加载 + 安全头 + 时区)
├── src/ # OOP 类库(命名空间:BCJD\)
│ ├── AutoLoader.php # PSR-4 自动加载器
│ ├── Auth.php # 认证类(CSRF Token + Session 安全 + bcrypt)
│ ├── Database.php # PDO 单例管理器(预处理语句 + 严格模式)
│ ├── LinkManager.php # 链接 CRUD(参数绑定 + XSS 过滤)
│ ├── Response.php # 统一 JSON 响应
│ └── Validator.php # 输入验证净化
├── public/ # 🎯 Web 入口(服务器 DocumentRoot 指向此目录)
│ ├── .htaccess # Apache 安全规则(安全头 + 防目录浏览)
│ ├── index.php # 前台首页
│ ├── admin.php # 管理面板(需登录)
│ └── api.php # RESTful API 接口
├── README.md
└── LICENSE
在管理面板添加/编辑链接时,可以设置「私有链接」开关:
登录按钮在首页右上角,点击后弹出密码输入框。
| 防护维度 | 实现方式 |
|---|---|
| SQL 注入 | 全部 PDO 预处理语句 + 参数绑定 |
| XSS 攻击 | htmlspecialchars(ENT_QUOTES) + SVG 白名单过滤 |
| CSRF 跨站请求伪造 | 64 位随机 Token + hash_equals 验证 |
| Session 劫持 | 登录后 regenerate_id + 30 分钟超时 + HttpOnly |
| 密码暴力破解 | bcrypt cost=12 + 500ms 登录延迟 |
| 信息泄露 | PDO 异常记录日志,用户仅见通用错误提示 |
| HTTP 安全头 | X-Frame-Options / X-Content-Type-Options / X-XSS-Protection / Referrer-Policy |
| 目录隔离 | 敏感代码在 Web 根目录之外,无法直接访问 |