Skip to content

bitse-lab/python-supply-chain

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 

Repository files navigation

Python 软件供应链构建与可视化工具

项目简介

本项目是一个面向 Python 开发者、安全研究员和系统管理员的开源工具,旨在解决 Python 软件供应链构建、依赖关系可视化及漏洞识别的核心需求。通过优化 pip 依赖解析算法,实现了不实际安装软件包即可构建精准供应链的功能,并结合 CVE 漏洞检索与前后端可视化界面,帮助用户全面掌控软件依赖生态的安全性与结构关系。

项目基于前后端分离架构,前端采用 Vue.js + Element UI 实现直观交互,后端通过 Django 提供高效 API 服务,支持关键词搜索、供应链生成、依赖详情查询、漏洞检测等核心功能,为 Python 生态的供应链安全研究与工程实践提供支撑。

核心功能

1. 软件供应链构建

  • 无需实际安装软件包,基于 pip 依赖解析算法优化实现供应链构建,确保与真实安装环境的依赖关系完全一致。
  • 支持指定软件包版本及可选依赖(extra dependencies),生成包含直接依赖与间接依赖的完整供应链网络。

2. 可视化展示

  • 以图形化方式展示供应链层级结构,节点颜色区分根节点(橙色)、普通节点(绿色)、含漏洞节点(红色)。
  • 支持节点点击交互,查看软件包详情及漏洞信息,直观呈现依赖传播路径。

3. 漏洞识别

  • 集成 NVD(国家漏洞数据库)接口,实时检索供应链中所有软件包的 CVE 漏洞信息。
  • 展示漏洞编号、描述、创建时间、相关链接等关键信息,助力安全风险评估。

4. 辅助功能

  • 关键词搜索:通过关键词查询 PyPI 上的软件包,支持模糊匹配与相关性排序。
  • 版本查询:获取指定软件包的所有历史版本,方便用户选择目标版本构建供应链。
  • 软件包详情:展示软件包的主页、描述、许可证、Stars/Forks 等生态数据。
  • 可选依赖查询:列出软件包的所有可选依赖,支持按需构建供应链。

技术栈

前端

  • 框架:Vue.js 3.3.11
  • 组件库:Element Plus 2.6.3
  • 构建工具:npm 9.8.1
  • 运行环境:Node.js v18.18.2
  • 布局:Flex 弹性盒模型(响应式设计)

后端

  • 语言:Python 3.9.2
  • Web 框架:Django 4.2.8
  • 核心能力:依赖解析算法优化、RESTful API 设计、CVE 数据爬虫
  • 接口测试:Apifox

数据来源

  • 软件包元数据:PyPI 官方 API
  • 软件包生态信息:Libraries.io API
  • 漏洞数据:NVD(National Vulnerability Database)

快速开始

环境准备

  1. 安装前端依赖:

    # 进入前端项目目录
    cd frontend
    npm install
  2. 安装后端依赖:

    # 进入后端项目目录
    cd backend
    pip install -r requirements.txt

运行步骤

  1. 启动后端服务:

    cd backend
    python manage.py runserver 0.0.0.0:8000
  2. 启动前端服务:

    cd frontend
    npm run serve
  3. 访问系统: 打开浏览器,输入 http://localhost:8080 即可进入系统主页。

使用指南

1. 搜索软件包

  • 在主页搜索栏输入关键词(如 boto3),点击搜索进入结果列表。
  • 选择目标软件包,跳转至供应链构建页面。

2. 构建供应链

  • 选择软件包版本(如 1.34.104)及需要的可选依赖(如 PDF)。
  • 点击「生成供应链」,页面下方将展示可视化的依赖网络。

3. 查看漏洞信息

  • 点击红色节点,左侧面板将显示该软件包的 CVE 漏洞详情,包括编号、描述、修复建议等。

4. 查询软件包详情

  • 点击任意节点,左侧面板将展示软件包的基本信息(主页、许可证、Stars 等)。

项目结构

supply-chain/
├── frontend/                # 前端项目目录
│   ├── src/
│   │   ├── components/      # 页面组件(搜索、供应链可视化、详情展示等)
│   │   ├── router/          # 路由配置(主页、搜索结果、供应链页面等)
│   │   └── App.vue          # 根组件
│   └── package.json         # 前端依赖配置
│
├── backend/                 # 后端项目目录
│   ├── supply_chain/        # 核心应用(依赖解析、漏洞查询等)
│   │   ├── views.py         # 视图函数(API 实现)
│   │   ├── models.py        # 数据模型
│   │   └── utils/           # 工具函数(依赖解析算法、CVE 爬虫等)
│   └── manage.py            # Django 项目入口
│
└── README.md                # 项目说明文档

接口说明

接口名称 请求类型 功能描述 参数 响应内容
key_search GET 关键词搜索软件包 keyWord: 搜索关键词 软件包列表(名称、描述)、状态码
get_version GET 获取软件包所有版本 name: 软件包名称 版本列表、状态码
get_extra GET 获取软件包可选依赖 name: 名称, version: 版本 可选依赖列表、状态码
supply_chain GET 构建供应链并查询漏洞 name: 名称, version: 版本, extra: 可选依赖 供应链图形数据、漏洞信息、状态码
get_project_num GET 获取 PyPI 生态统计数据 项目数、版本数、文件数等

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages