跳转到主要内容

Victims Web 服务

项目描述

Victims 网络应用程序。

报告问题

如果您在http://victi.ms或代码中发现问题,请创建新的问题

如果您有一个补丁或想要添加到项目的功能,请随意发送给我们pull request。

提交前请确保运行pep8。
使用PyPI软件包
pep8 --repeat .

开发

您可以通过安装PyPI软件包并使用提供的入口点来安装和使用服务器。请确保所需的数据库服务可用并/或已配置。

pip install --user victims-web
victims-web-server

开发指南

这是一份关于如何使用提供的docker-compose配置和开发Dockerfile在此代码库中工作的简要指南。注意,在基本目录中提供的Dockerfile不应用于生产,仅供开发使用。

Docker 构建过程

构建镜像

可以构建镜像以提供一个具有所有依赖项的运行环境。

docker build -t local/victims-web .

使用Docker镜像

如上所示构建的Docker镜像将不包含应用程序源代码,但它期望工作目录挂载在/opt/source

docker run --rm -it -v `pwd`:/opt/source local/victims-web

Docker Compose

《docker-compose.yml》文件定义了在本地机器上运行服务器副本所需的服务。通过 docker-compose 启动服务器将;

  1. 启动支持版本的 MongoDB 实例

  2. 使用测试数据填充数据库

  3. 使用 python -m victims.web 启动 Web 服务器

  4. 绑定到本地主机的 5000 端口

启动服务器

这将启动一个与上述描述相同的服务器实例。请注意,这是在 DEBUGTESTING 都启用的情况下启动的。这还将确保如果代码发生变化,代码将自动重新加载。

docker-compose up server

对工作副本执行测试

为了对工作副本代码执行测试,您可以使用 test 服务,具体请参阅 docker-compose.yml 文件。这将启动依赖服务,加载种子数据,然后执行应用程序测试和 pep8

docker-compose up test

用法

安全的 API 访问

/service/submit/archive/java 之类的提交端点由类似于 AWS 使用的实现进行安全保护。认证令牌应在通过 VICTIMS_API_HEADER 配置(默认:X-Victims-Api)配置的 HTTP 头中提供。如果不存在或验证/认证失败,则回退到 BASIC AUTH

以下是一个使用 curl 的示例

$ curl -v -X PUT -H "X-Victims-Api: $APIKEY:$SIGNATURE" -H "Date: Thu, 22 Aug 2013 15:20:37 GMT" -F archive=@$ARCHIVE https://$VICTIMS_SERVER/service/submit/archive/java?version=VID\&groupId=GID\&artifactId=AID\&cves=CVE-2013-0000,CVE-2013-0001

这也可以使用 BASIC-AUTH 如下完成

curl -v -u $USERNAME:$PASSWORD -X PUT -F archive=@$ARCHIVE_FILE https://$VICTIMS_SERVER/service/submit/archive/java?version=VID\&groupId=GID\&artifactId=AID\&cves=CVE-2013-0000,CVE-2013-0001

API 密钥和客户端密钥

在 victi.ms 上的每个账户默认都分配了一个 API 密钥和密钥。这些可以通过访问 https://victi.ms/account 获取。这些可以使用 https://victi.ms/account_edit 上的表单重新生成。

签名

签名是使用 HTTP 方法路径日期MD5十六进制摘要 生成的。

注意

  • “路径”包括查询字符串参数,例如:/service/submit/archive/java?cves=CVE-0000-0000

  • MD5校验和包括提交的所有文件的数据(如果有的话)。在校验和添加到字符串之前,校验和按升序排序。

  • 日期应使用 GMT。例如:Thu, 22 Aug 2013 15:20:37 GMT

以下是一个使用 Python 的参考实现

from hmac import HMAC

def generate_signature(secret, method, path, date, md5sums):
    md5sums.sort()
    ordered = [method, path, date] + md5sums
    string = ''

    for content in ordered:
        if content is None:
            raise ValueError('Required header not found')
        string += str(content)

    return HMAC(
        key=bytes(secret),
        msg=string.lower(),
        digestmod=sha512
    ).hexdigest().upper()

项目详情


下载文件

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

源代码发行版

victims-web-2.2.1.tar.gz (49.0 kB 查看散列)

上传时间 源代码

构建发行版

victims_web-2.2.1-py2-none-any.whl (105.6 kB 查看散列)

上传时间 Python 2

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面