核心用法
Intranet 是一款基于 Python 的轻量级 HTTP 文件服务器,定位为替代 Apache/nginx 的本地开发工具。核心功能包含三大部分:
1. 静态文件服务:从 {workspace}/intranet/www/ 目录提供 HTTP 访问,config.json 置于 webroot 之外,确保配置不暴露
2. 插件系统:通过 config.json 将外部目录挂载到 URL 前缀,支持纯静态或 CGI 动态模式。CGI 模式下需为 index.py 配置 SHA-256 哈希校验,未配置哈希的插件仅开放静态访问
3. CGI 动态执行:默认关闭,启用后仅允许 index.py 作为入口点执行,其他 .py 文件一律 403 拒绝
启动命令简洁:python3 scripts/intranet.py start [--port 9000] [--host 0.0.0.0] [--token SECRET]。支持状态检查与进程管理(status/stop)。
显著优点
- 零依赖部署:仅需系统 Python3,无需 root,适合受限环境快速启动
- 多层安全设计:CGI 默认关闭、路径遍历防护、符号链接拦截、插件目录白名单、主机头校验、Token 会话认证(浏览器 cookie/API Bearer 双模式)
- 哈希锁定的 CGI:插件动态代码执行需配置 SHA-256 哈希,篡改即失效,降低供应链攻击面
- 工作区隔离:所有状态(配置、PID、运行时、webroot)限定在单一目录,无外部写操作
- 开发友好:30 秒 CGI 超时、清晰错误码、支持 LAN 共享(需显式开启 host + token + allowed_hosts)
潜在缺点与局限性
- 功能精简:无 HTTPS、无高级路由、无负载均衡,生产环境适用性有限
- CGI 性能瓶颈:Python 进程级 CGI 而非持久化应用服务器,高并发场景效率低下
- Token 管理粗放:单一全局 token,无用户分级、无细粒度权限控制
- 哈希维护成本:插件
index.py更新需重新计算并同步配置哈希,迭代频繁时操作繁琐 - Python 版本绑定:依赖系统
python3,未声明最低版本,潜在兼容风险
适合人群
- 本地/局域网开发者:快速共享项目文件、预览静态站点、调试轻量动态接口
- 教育/演示场景:教学 HTTP 服务器原理、CGI 机制,无需复杂环境配置
- 受限终端用户:无法安装系统级服务的 CI/CD 环境、Docker 容器内调试
常规风险
| 风险类别 | 说明 |
|---------|------|
| **配置泄露** | 虽 config.json 置于 webroot 外,若权限设置错误(如 `chmod 644` 且目录遍历未阻断)仍可能暴露 |
| **CGI 滥用** | 启用后若插件哈希配置疏漏或 `index.py` 存在注入漏洞,可导致代码执行;建议生产环境禁用 CGI |
| **Token 硬编码** | 命令行 `--token` 可能进入 shell 历史记录,建议使用 `config.json` 并配合文件权限管控 |
| **LAN 暴露** | `--host 0.0.0.0` 配合弱 token 或缺失 `allowed_hosts` 时,内网服务易被未授权扫描利用 |
| **符号链接绕过** | 静态路径已阻断 symlink,但插件 `index.py` 允许 symlink,若哈希校验通过仍具风险 |
总体建议:作为开发/测试工具评级优良,生产环境或公网暴露需额外加固(前置 HTTPS 代理、网络隔离、定期哈希审计)。