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

bdfu的Python项目详细描述


#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 -egit+https://github.com/rjw57/bdfu#egg=bdfu `

##配置

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

`python # Save this as simple-server.cfg JWT_SECRET_KEY = 'supersecret' STORAGE_DIR = '/tmp/bdfu-storage-example' `

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

在生产中,可以通过设置环境来告诉BDFU这个文件 变量BDFU_SETTINGS到配置文件的absolute路径。

###入门

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

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

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

`console $ bdfu gen-token sally supersecret >token-sally.txt `

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

尝试上载1K随机数据文件:

`console $ dd if=/dev/urandomof=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,我们可以检查:

`console $ ls /tmp/bdfu-storage-example/sally/ ecbfb21578ad49548472d955b38ac65b $ diff -qs/tmp/bdfu-storage-example/sally/ecbfb21578ad49548472d955b38ac65btest-file.bin Files /tmp/bdfu-storage-example/sally/ecbfb21578ad49548472d955b38ac65b and test-file.bin are identical `

###代币生成

除了bdfu gen-token命令之外,还有一个 示例](examples/make token.py)随源代码一起提供。令牌生成可以 由任何拥有服务器机密的人执行。代币是标准的 [JWT](http://jwt.io)令牌实际上,可以粘贴 bdfu gen-token进入jwt网站亲自查看他们的结构。

令牌可以由服务器管理员手动生成并提供给 用户或它们可能由某个拥有 秘密。例如,特定机构可以将令牌生成器包装为 由现有身份提供者保护的Web应用程序。 类似地,管理员可以自由选择 按用户使用他们认为合适的策略。

##服务器部署

《华尔街日报》

bdfu web应用程序作为标准wsgi应用程序公开,适合于 在apache或类似软件中通过mod_wsgi运行。有一个独立的 服务器](examples/simple server.py)源代码附带的示例。

应用程序要求HTTPAuthorization头由 网络服务器。这可能不是服务器的默认配置为了 例如,Apache web服务器将需要以下指令:

` WSGIPassAuthorization On `

###cgi

附带了一个示例[cgi包装脚本](examples/cgi-bin/bdfu) 源头

应用程序要求httpAuthorization头由 到cgi脚本的web服务器。这可能不是 你的服务器例如,apache web服务器将需要 指令:

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

##安全注意事项

作为一种“脑死亡”解决方案,bdfu的安全模型力求非常简单; 任何可以访问服务器机密的人都可以生成令牌和必须be 可信的。例如,对于 路径分隔符等愚蠢的服务器管理员可以自由创建用户 如果他们愿意,可以调用../../../../etc/passwd。BDFU假设服务器 管理员知道他们在做什么

一般来说,bdfu的目标是在令牌被 已验证,但假设令牌中的声明尚未生成 一个对手

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java使用Jena获取类上的OWL限制   我需要用javadoc记录每一个方法还是java中的“main”方法?   ssl我的Java密钥库中需要什么?   java如何在安卓中实现视图寻呼机适配器?   java LibreOffice 4.4.3在不同服务器上使用jodconverter访问文档   Selenium Webdriver(Java)脚本之间的时间延迟   混合使用路径参数和请求参数的java Rest API   爪哇超级。基类中的toString()方法?   java IntelliJ Idea 2019.2与NPW崩溃   java replaceAll不适用于以下查询   java递归相关:两个数的乘积   java在屏幕/活动之间切换,无需按钮   java试图在GridBagLayout中对齐JcheckBox   java安全远程密码协议SRP和Spring安全