跳转到主要内容

一个“脑死亡”简单的文件上传服务器

项目描述

# bdfu:一个“脑死亡”简单的文件上传服务器

[![构建状态](https://travis-ci.org/rjw57/bdfu.svg?branch=master)](https://travis-ci.org/rjw57/bdfu)

BDFU旨在解决一个问题,即允许一个或多个用户以认证方式将文件上传到某个服务器。具体来说,以下是一些简化措施

## 安装

安装通过pipeasy_install完成

`console $ pip install bdfu `

可以从这个存储库直接安装开发版本

`console $ pip install -e git+https://github.com/rjw57/bdfu#egg=bdfu `

## 配置

bdfu源代码附带了一个[示例配置](examples/simple-server.cfg)。下面是一个简化的版本

`python # 将此保存为 simple-server.cfg JWT_SECRET_KEY = 'supersecret' STORAGE_DIR = '/tmp/bdfu-storage-example' `

配置文件本身是一个Python脚本,因此可以计算任何这些选项的值。

在生产环境中,可以通过设置环境变量BDFU_SETTINGS为配置文件的绝对路径来告诉BDFU此文件。

## 入门

首先,使用示例配置运行示例服务器

`console $ bdfu server /path/to/simple-server.cfg `

这将导致服务器在http://localhost:8080/上运行。现在,为“sally”用户生成一个令牌

`控制台 $ bdfu gen-token sally supersecret >token-sally.txt`

默认情况下,此令牌会在生成后一分钟到期。可以通过 --expires-in 选项来设置 bdfu gen-token 的到期时间。

尝试上传一个1K的随机数据文件

`控制台 $ dd if=/dev/urandom of=test-file.bin bs=1024 count=1 $ bdfu upload http://localhost:8080/ `cat token-sally.txt test-file.bin ecbfb21578ad49548472d955b38ac65b`

bdfu upload 输出的字符串是该文件的唯一ID。文件将上传到 $STORAGE_DIR/$USER/$FILE_ID,我们可以进行检查

`控制台 $ ls /tmp/bdfu-storage-example/sally/ ecbfb21578ad49548472d955b38ac65b $ diff -qs /tmp/bdfu-storage-example/sally/ecbfb21578ad49548472d955b38ac65b test-file.bin 文件 /tmp/bdfu-storage-example/sally/ecbfb21578ad49548472d955b38ac65btest-file.bin 是相同的`

## 令牌生成

除了 bdfu gen-token 命令外,源代码中还附带了一个 [独立示例](examples/make-token.py)。任何人只要拥有服务器密钥就可以生成令牌。令牌是标准的 [JWT](https://jwt.node.org.cn) 令牌。确实,可以将 bdfu gen-token 生成的令牌粘贴到 JWT 网站上,自行查看其结构。

令牌可以由服务器管理员手动生成并分发给用户,或者由拥有密钥的某个网关自动生成。例如,某个机构可能将令牌生成器包装在一个受现有身份提供者保护的 Web 应用程序中。同样,管理员可以根据他们认为合适的任何策略,为每个用户选择令牌的到期时间。

## 服务器部署

### WSGI

BDFU Web 应用程序作为标准的 WSGI 应用程序公开,适用于通过 Apache 或类似的 mod_wsgi 运行。源代码中附带了一个 [独立服务器](examples/simple-server.py) 示例。

应用程序要求通过 Web 服务器传递 HTTP Authorization 标头。这可能不是您的服务器的默认配置。例如,Apache Web 服务器需要以下指令

` WSGIPassAuthorization On `

### CGI

源代码中附带了一个 [CGI 包装脚本](examples/cgi-bin/bdfu) 示例。

应用程序要求通过 Web 服务器将 HTTP Authorization 标头传递到 CGI 脚本。这可能不是您的服务器的默认配置。例如,Apache Web 服务器需要以下指令

` RewriteEngine on RewriteCond %{HTTP:Authorization} ^(.*) RewriteRule .* - [e=HTTP_AUTHORIZATION:%1] `

## 安全考虑

作为一个“脑死亡”的解决方案,BDFU 旨在在其安全模型中非常简单;任何拥有服务器密钥的人都可以生成令牌,并且必须被信任。例如,不尝试对路径分隔符进行用户名的净化等。愚蠢的服务器管理员可以自由创建一个名为 ../../../../etc/passwd 的用户。BDFU 假设服务器管理员知道他们在做什么。

通常,BDFU 旨在在令牌被验证之前是安全的,但假设令牌中的声明并非由对手生成。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分发

bdfu-1.0.3.tar.gz (9.0 kB 查看哈希值)

上传时间

由以下支持