核心用法
Intranet 是一个基于 Python3 的轻量级本地 HTTP 文件服务器,定位为传统 Apache/nginx 的极简替代方案。用户无需 root 权限即可快速启动,默认监听 127.0.0.1:8080,通过 {baseDir}/scripts/intranet.py start 即可运行。核心功能包括:静态文件服务(webroot 目录)、插件目录挂载(通过 config.json 配置 URL 前缀)、以及可选的 CGI 脚本执行。
插件系统支持两种配置模式:简单路径挂载(仅静态文件)或扩展配置(带 SHA-256 哈希验证的 CGI)。CGI 功能默认关闭,开启后仅允许名为 index.py 的入口文件执行,且脚本必须设置可执行权限。访问控制方面,支持 --token 参数启用 Bearer Token 认证,以及 allowed_hosts 配置限制 Host 头,LAN 访问需同时满足两者。
显著优点
1. 零依赖部署:仅需 Python3,无需安装 Apache/nginx 或配置系统服务
2. 工作空间隔离:所有文件(配置、PID、webroot)限制在工作空间内,无外部写入
3. 多重安全设计:CGI 默认关闭、符号链接拒绝(静态路径)、路径遍历防护、插件白名单机制
4. 灵活的插件架构:支持外部目录挂载,CGI 版本通过哈希锁定特定脚本,防止篡改
5. 轻量级认证:Token + Session Cookie 机制,兼顾浏览器与 API 客户端
潜在缺点与局限性
- CGI 性能瓶颈:Python CGI 非持久化进程,高并发场景下性能受限
- 仅支持 index.py:CGI 入口严格限制,复杂应用需自行路由处理
- 无 HTTPS 原生支持:需配合反向代理实现加密传输
- 哈希管理开销:插件 CGI 需手动计算并维护 SHA-256 哈希值
- 30秒执行超时:长时间运行的脚本会被强制终止
适合人群
- 本地开发测试环境快速搭建
- 小型团队内网文件共享与工具集成
- 需要轻量级 CGI 服务的 Python 开发者
- 对系统权限敏感、追求最小化部署的场景
常规风险
1. CGI 启用后的代码执行风险:尽管限制为 index.py 且需哈希匹配,但任意代码执行能力仍存在被利用可能
2. Token 泄露:Bearer Token 通过 URL 参数传递时可能留存于浏览器历史或日志
3. --host 0.0.0.0 暴露面扩大**:LAN 访问需严格配合 Token 与 allowed_hosts,配置不当可导致未授权访问
4. 插件目录遍历:插件路径必须位于工作空间内,配置错误可能突破隔离边界
5. 符号链接绕过:静态路径拒绝符号链接,但插件 CGI 的 index.py 允许符号链接(需哈希匹配),存在配置混淆风险