核心用法
Intranet 是一个专为本地开发环境设计的轻量级HTTP文件服务器,完全基于Python标准库实现,无需安装Apache、Nginx等传统Web服务器,也无需系统root权限即可运行。
基础启动:python3 scripts/intranet.py start 默认在8080端口启动,自动检测工作空间(通过向上查找skills/目录)并加载配置。
静态文件服务:将文件放入{workspace}/intranet/www/目录即可通过HTTP访问,支持标准MIME类型和目录索引。
插件系统:通过config.json将外部目录挂载到URL前缀,支持两种模式:
- 纯静态模式:直接映射目录,适合前端资源
- CGI扩展模式:配合SHA-256哈希验证,允许执行
index.py作为网关接口
CGI执行(默认关闭):启用后,index.py可作为CGI处理动态请求。插件CGI强制要求哈希校验,防止篡改;Webroot CGI无需哈希(假定开发者直接控制)。所有其他.py文件一律返回403,杜绝任意代码执行。
显著优点
1. 零依赖部署:仅需Python3标准库,无需编译安装
2. 权限最小化:默认绑定127.0.0.1,无root要求
3. 配置即代码:插件挂载、访问控制、CGI开关全部集中管理
4. 安全分层设计:
- 配置外置:config.json位于webroot之外,永不暴露
- 路径隔离:所有解析路径强制限定在基准目录内,防目录遍历
- 脚本白名单:仅
index.py可执行,其他Python文件被阻止 - 可选令牌认证与Host白名单,支持LAN安全共享
5. 开发友好:自动工作空间检测、清晰的状态检查命令、30秒CGI超时保护
潜在缺点与局限性
- 性能受限:单线程同步处理,不适合高并发生产环境
- Python专用CGI:仅支持Python脚本,无PHP/Perl等扩展机制
- 哈希管理成本:插件CGI需手动维护SHA-256指纹,更新脚本时需同步更新配置
- 令牌传递限制:浏览器端需通过URL参数首次传递令牌,存在短暂暴露风险
- 无HTTPS支持:明文传输,敏感场景需配合反向代理
- 会话依赖Cookie:跨域或禁用Cookie环境需额外处理
适合人群
- 本地全栈开发者需要快速启动前后端联调环境
- 内部工具/仪表盘团队构建轻量级Web界面
- 教育场景演示HTTP/CGI原理
- CI/CD流水线中需要临时文件服务器的测试环节
- 任何需要"零配置"HTTP服务的Python技术栈用户
常规风险
| 风险场景 | 说明 | 缓解措施 |
|---------|------|---------|
| CGI误开启 | 配置文件被篡改启用CGI | 文件权限控制,定期审计config.json |
| 插件路径逃逸 | 配置中填写workspace外路径 | 启动时强制校验,非法路径拒绝加载 |
| 令牌泄露 | URL参数或日志中暴露secret | 使用后及时清理,配合短期令牌轮换 |
| 脚本哈希失效 | index.py更新后未同步config.json | CI流程自动计算并更新哈希 |
| LAN暴露过度 | `--host 0.0.0.0`未配令牌/白名单 | 启动警告提示,强制双因素认证 |
| 符号链接攻击 | 恶意symlink指向敏感文件 | 解析后二次校验目标路径包含性 |