Intranet

🌐 零配置轻量HTTP服务器,插件即服务

基于Python的轻量级本地HTTP文件服务器,支持插件挂载与CGI动态脚本,无需Apache/nginx,零权限即可运行,适合快速搭建内网服务原型。

收藏
4.3k
安装
2k
版本
3.2.4
CLS 安全扫描中
预计需要 3 分钟...

使用说明

核心用法

Intranet 是一个用Python编写的轻量级HTTP文件服务器,设计目标是替代Apache/nginx等重量级方案,让用户无需root权限即可快速启动本地Web服务。

启动服务

python3 scripts/intranet.py start              # 默认8080端口
python3 scripts/intranet.py start --port 9000  # 自定义端口

目录结构
服务强制采用隔离式目录布局:

  • {workspace}/intranet/config.json — 配置文件(永不暴露
  • {workspace}/intranet/www/ — Web根目录(对外服务)
  • {workspace}/intranet/.pid — 运行时状态

插件系统
通过config.json挂载外部目录到URL前缀:

{
  "plugins": {
    "api": "/path/to/plugin",
    "tools": { "dir": "/path/to/tools", "hash": "sha256:..." }
  }
}

CGI动态执行(默认关闭)
启用后,仅index.py可执行:

  • Webroot子目录中的index.py处理该目录请求
  • 插件根目录的index.py处理插件全部子路径(需SHA-256哈希校验)
  • 其他所有`.py`文件返回403,既不被服务也不被执行

---

显著优点

| 特性 | 说明 |
|------|------|
| **零依赖部署** | 仅需Python3标准库,无外部包 |
| **权限最小化** | 无需root,普通用户端口即可运行 |
| **配置与内容隔离** | `config.json`位于`www/`之外,物理隔绝暴露风险 |
| **插件哈希校验** | CGI脚本强制SHA-256校验,防篡改执行 |
| **分层安全开关** | CGI默认关闭、LAN访问需双重认证(token+allowlist) |
| **路径严格校验** | 符号链接追踪后仍验证最终路径,防目录遍历 |

---

潜在缺点与局限性

1. 性能瓶颈:纯Python实现,无异步IO,高并发场景吞吐量受限
2. CGI模式过时:每次请求fork新进程,资源开销大,不适合高负载

3. 无HTTPS原生支持:需额外反向代理(如nginx)实现TLS加密

4. 单文件入口限制:插件CGI仅支持单index.py入口,复杂路由需自行实现

5. 会话机制简陋:基于Cookie的token会话,无CSRF防护设计

6. 日志审计缺失:无结构化访问日志,安全事件追溯困难

---

适合人群

  • 开发者:快速搭建本地API原型、内部工具站点
  • 自动化脚本用户:为Python脚本提供HTTP接口暴露
  • 内网环境:企业/家庭局域网内的轻量文件共享服务
  • 教育场景:学习HTTP服务器原理、CGI机制的教学工具

不适合:生产级公网服务、高并发API网关、需要审计合规的企业应用。

---

常规风险

| 风险场景 | 缓解状态 | 建议 |
|---------|---------|------|
| 配置泄露 | ✅ 已隔离 | `config.json`位于webroot外 |
| 路径遍历 | ✅ 有校验 | 符号链接解析后二次验证 |
| 任意代码执行 | ⚠️ 有条件 | CGI默认关闭,开启后仅限`index.py`且需哈希匹配 |
| 未授权LAN访问 | ✅ 需显式开启 | `--host 0.0.0.0`强制要求token+allowed_hosts |
| 脚本篡改执行 | ✅ 哈希校验 | 插件CGI必须配置SHA-256摘要 |
| 拒绝服务 | ⚠️ 部分缓解 | 30秒CGI超时,但无速率限制 |

关键建议

  • 公网部署必须使用反向代理+TLS
  • 定期轮换--token密钥
  • 生产环境建议迁移至uWSGI/ASGI等现代方案

Intranet 内容

scripts文件夹
手动下载zip · 15.0 kB
intranet_web.pytext/plain
请选择文件