安全检查已安装的依赖项是否存在已知的安全漏洞。

safet的Python项目详细描述


safetypypitravisupdates

安全检查已安装的依赖项是否存在已知的安全漏洞。

默认情况下,它使用open python漏洞数据库安全数据库, 但是可以升级为使用pyup.io的安全api,使用--key选项。

安装

用PIP安装安全性

pip install safety

用法

检查当前选定的虚拟环境是否具有已知安全性的依赖项 脆弱性,运行:

safety check

您应该得到类似的报告:

╒══════════════════════════════════════════════════════════════════════════════╕
│                                                                              │
│                               /$$$$$$            /$$                         │
│                              /$$__  $$|$$                         │
│           /$$$$$$$  /$$$$$$|$$\__//$$$$$$  /$$$$$$   /$$   /$$           │
│          /$$_____/ |____  $$|$$$$   /$$__  $$|_  $$_/  |$$|$$           │
│         |$$$$$$   /$$$$$$$|$$_/  |$$$$$$$$|$$|$$|$$           │
│          \____  $$ /$$__  $$|$$|$$_____/  |$$ /$$|$$|$$           │
│          /$$$$$$$/|$$$$$$$|$$|$$$$$$$  |$$$$/|$$$$$$$           │
│         |_______/  \_______/|__/     \_______/   \___/   \____  $$           │
│                                                          /$$|$$           │
│                                                         |$$$$$$/           │
│  by pyup.io                                              \______/            │
│                                                                              │
╞══════════════════════════════════════════════════════════════════════════════╡
│ REPORT                                                                       │
╞══════════════════════════════════════════════════════════════════════════════╡
│ No known security vulnerabilities found.                                     │
╘══════════════════════════════════════════════════════════════════════════════╛

现在,让我们安装一些不安全的东西:

pip install insecure-package

是的,你真的可以安装它。

再次运行安全检查

╒══════════════════════════════════════════════════════════════════════════════╕
│                                                                              │
│                               /$$$$$$            /$$                         │
│                              /$$__  $$|$$                         │
│           /$$$$$$$  /$$$$$$|$$\__//$$$$$$  /$$$$$$   /$$   /$$           │
│          /$$_____/ |____  $$|$$$$   /$$__  $$|_  $$_/  |$$|$$           │
│         |$$$$$$   /$$$$$$$|$$_/  |$$$$$$$$|$$|$$|$$           │
│          \____  $$ /$$__  $$|$$|$$_____/  |$$ /$$|$$|$$           │
│          /$$$$$$$/|$$$$$$$|$$|$$$$$$$  |$$$$/|$$$$$$$           │
│         |_______/  \_______/|__/     \_______/   \___/   \____  $$           │
│                                                          /$$|$$           │
│                                                         |$$$$$$/           │
│  by pyup.io                                              \______/            │
│                                                                              │
╞══════════════════════════════════════════════════════════════════════════════╡
│ REPORT                                                                       │
╞══════════════════════════╤═══════════════╤═══════════════════╤═══════════════╡
│ package                  │ installed     │ affected          │ source        │
╞══════════════════════════╧═══════════════╧═══════════════════╧═══════════════╡
│ insecure-package         │ 0.1.0         │ <0.2.0            │ changelog     │
╘══════════════════════════╧═══════════════╧═══════════════════╧═══════════════╛

示例

读取需求文件

与pip一样,safety可以读取本地需求文件:

safety check -r requirements.txt

从stdin中读取

安全性也可以通过设置的--stdin标志从stdin读取。

要检查本地需求文件,请运行:

cat requirements.txt | safety check --stdin

pip freeze的输出

pip freeze | safety check --stdin

或检查单个包裹:

echo "insecure-package==0.1" | safety check --stdin

有关更多示例,请查看选项部分。

在Docker中使用安全功能

作为码头集装箱,安全性很容易实现。要构建容器,只需执行:

pip install safety
0

容器的使用方法与示例部分所述相同。

pip install safety
1

在CI服务中使用安全功能

在你的ci管道中,安全性很好。如果发现漏洞,则返回非零退出状态。

在测试之前或之后运行它。如果安全发现问题,您的测试将失败。

特拉维斯

pip install safety
2

深入的GitHub集成

如果您正在寻找与github存储库的深度集成:安全性作为 pyup.io的一部分,称为安全ci。安全CI 检查具有已知安全漏洞的依赖项的提交和拉取请求 并在github上显示状态。

safety ci

安全生产

安全是免费和开放源码的(麻省理工学院许可)。基础的开放漏洞数据库每月更新一次。

要在添加所有漏洞后立即访问它们,您需要一个安全api键带有付费账户pyup.io对于组织,从99美元开始。

选项

--键

pyup.io的漏洞数据库的API密钥。可以设置为safety_api_key环境变量。

示例

pip install safety
3

--db

具有本地漏洞数据库的目录的路径,包括unsecure.jsonunsecure_full.json

示例

pip install safety
4

--代理主机

代理主机IP或DNS

--代理端口

代理端口号

--代理协议

代理协议(https或http)


--json

以JSON格式输出漏洞。

示例

pip install safety
5
pip install safety
6

--完整报告

完整报告包括安全提示(如果可用)。

示例

pip install safety
7
pip install safety
8

--bare

仅输出易受攻击的包。可与其他工具结合使用。

示例

pip install safety
9
safety check
0

--缓存

将请求本地缓存到漏洞数据库2小时。

示例

safety check
1

--stdin

从stdin读取输入。

示例

safety check
2
safety check
3
safety check
4

--文件-r

从一个(或多个)需求文件中读取输入。

示例

safety check -r requirements.txt
safety check
6
safety check
7

--忽略-i

按ID忽略一个(或多个)漏洞

示例

safety check
8
safety check
9
╒══════════════════════════════════════════════════════════════════════════════╕
│                                                                              │
│                               /$$$$$$            /$$                         │
│                              /$$__  $$|$$                         │
│           /$$$$$$$  /$$$$$$|$$\__//$$$$$$  /$$$$$$   /$$   /$$           │
│          /$$_____/ |____  $$|$$$$   /$$__  $$|_  $$_/  |$$|$$           │
│         |$$$$$$   /$$$$$$$|$$_/  |$$$$$$$$|$$|$$|$$           │
│          \____  $$ /$$__  $$|$$|$$_____/  |$$ /$$|$$|$$           │
│          /$$$$$$$/|$$$$$$$|$$|$$$$$$$  |$$$$/|$$$$$$$           │
│         |_______/  \_______/|__/     \_______/   \___/   \____  $$           │
│                                                          /$$|$$           │
│                                                         |$$$$$$/           │
│  by pyup.io                                              \______/            │
│                                                                              │
╞══════════════════════════════════════════════════════════════════════════════╡
│ REPORT                                                                       │
╞══════════════════════════════════════════════════════════════════════════════╡
│ No known security vulnerabilities found.                                     │
╘══════════════════════════════════════════════════════════════════════════════╛
0

--输出-o

将报告保存到文件中

示例

╒══════════════════════════════════════════════════════════════════════════════╕
│                                                                              │
│                               /$$$$$$            /$$                         │
│                              /$$__  $$|$$                         │
│           /$$$$$$$  /$$$$$$|$$\__//$$$$$$  /$$$$$$   /$$   /$$           │
│          /$$_____/ |____  $$|$$$$   /$$__  $$|_  $$_/  |$$|$$           │
│         |$$$$$$   /$$$$$$$|$$_/  |$$$$$$$$|$$|$$|$$           │
│          \____  $$ /$$__  $$|$$|$$_____/  |$$ /$$|$$|$$           │
│          /$$$$$$$/|$$$$$$$|$$|$$$$$$$  |$$$$/|$$$$$$$           │
│         |_______/  \_______/|__/     \_______/   \___/   \____  $$           │
│                                                          /$$|$$           │
│                                                         |$$$$$$/           │
│  by pyup.io                                              \______/            │
│                                                                              │
╞══════════════════════════════════════════════════════════════════════════════╡
│ REPORT                                                                       │
╞══════════════════════════════════════════════════════════════════════════════╡
│ No known security vulnerabilities found.                                     │
╘══════════════════════════════════════════════════════════════════════════════╛
1
╒══════════════════════════════════════════════════════════════════════════════╕
│                                                                              │
│                               /$$$$$$            /$$                         │
│                              /$$__  $$|$$                         │
│           /$$$$$$$  /$$$$$$|$$\__//$$$$$$  /$$$$$$   /$$   /$$           │
│          /$$_____/ |____  $$|$$$$   /$$__  $$|_  $$_/  |$$|$$           │
│         |$$$$$$   /$$$$$$$|$$_/  |$$$$$$$$|$$|$$|$$           │
│          \____  $$ /$$__  $$|$$|$$_____/  |$$ /$$|$$|$$           │
│          /$$$$$$$/|$$$$$$$|$$|$$$$$$$  |$$$$/|$$$$$$$           │
│         |_______/  \_______/|__/     \_______/   \___/   \____  $$           │
│                                                          /$$|$$           │
│                                                         |$$$$$$/           │
│  by pyup.io                                              \______/            │
│                                                                              │
╞══════════════════════════════════════════════════════════════════════════════╡
│ REPORT                                                                       │
╞══════════════════════════════════════════════════════════════════════════════╡
│ No known security vulnerabilities found.                                     │
╘══════════════════════════════════════════════════════════════════════════════╛
2

复习

如果以json格式保存报表,则可以再次以报表格式查看。

选项

--文件-f(必需)

阅读不安全的报告。

示例

╒══════════════════════════════════════════════════════════════════════════════╕
│                                                                              │
│                               /$$$$$$            /$$                         │
│                              /$$__  $$|$$                         │
│           /$$$$$$$  /$$$$$$|$$\__//$$$$$$  /$$$$$$   /$$   /$$           │
│          /$$_____/ |____  $$|$$$$   /$$__  $$|_  $$_/  |$$|$$           │
│         |$$$$$$   /$$$$$$$|$$_/  |$$$$$$$$|$$|$$|$$           │
│          \____  $$ /$$__  $$|$$|$$_____/  |$$ /$$|$$|$$           │
│          /$$$$$$$/|$$$$$$$|$$|$$$$$$$  |$$$$/|$$$$$$$           │
│         |_______/  \_______/|__/     \_______/   \___/   \____  $$           │
│                                                          /$$|$$           │
│                                                         |$$$$$$/           │
│  by pyup.io                                              \______/            │
│                                                                              │
╞══════════════════════════════════════════════════════════════════════════════╡
│ REPORT                                                                       │
╞══════════════════════════════════════════════════════════════════════════════╡
│ No known security vulnerabilities found.                                     │
╘══════════════════════════════════════════════════════════════════════════════╛
3
╒══════════════════════════════════════════════════════════════════════════════╕
│                                                                              │
│                               /$$$$$$            /$$                         │
│                              /$$__  $$|$$                         │
│           /$$$$$$$  /$$$$$$|$$\__//$$$$$$  /$$$$$$   /$$   /$$           │
│          /$$_____/ |____  $$|$$$$   /$$__  $$|_  $$_/  |$$|$$           │
│         |$$$$$$   /$$$$$$$|$$_/  |$$$$$$$$|$$|$$|$$           │
│          \____  $$ /$$__  $$|$$|$$_____/  |$$ /$$|$$|$$           │
│          /$$$$$$$/|$$$$$$$|$$|$$$$$$$  |$$$$/|$$$$$$$           │
│         |_______/  \_______/|__/     \_______/   \___/   \____  $$           │
│                                                          /$$|$$           │
│                                                         |$$$$$$/           │
│  by pyup.io                                              \______/            │
│                                                                              │
╞══════════════════════════════════════════════════════════════════════════════╡
│ REPORT                                                                       │
╞══════════════════════════════════════════════════════════════════════════════╡
│ No known security vulnerabilities found.                                     │
╘══════════════════════════════════════════════════════════════════════════════╛
4

--完整报告

完整报告包括安全提示(如果可用)。

示例

╒══════════════════════════════════════════════════════════════════════════════╕
│                                                                              │
│                               /$$$$$$            /$$                         │
│                              /$$__  $$|$$                         │
│           /$$$$$$$  /$$$$$$|$$\__//$$$$$$  /$$$$$$   /$$   /$$           │
│          /$$_____/ |____  $$|$$$$   /$$__  $$|_  $$_/  |$$|$$           │
│         |$$$$$$   /$$$$$$$|$$_/  |$$$$$$$$|$$|$$|$$           │
│          \____  $$ /$$__  $$|$$|$$_____/  |$$ /$$|$$|$$           │
│          /$$$$$$$/|$$$$$$$|$$|$$$$$$$  |$$$$/|$$$$$$$           │
│         |_______/  \_______/|__/     \_______/   \___/   \____  $$           │
│                                                          /$$|$$           │
│                                                         |$$$$$$/           │
│  by pyup.io                                              \______/            │
│                                                                              │
╞══════════════════════════════════════════════════════════════════════════════╡
│ REPORT                                                                       │
╞══════════════════════════════════════════════════════════════════════════════╡
│ No known security vulnerabilities found.                                     │
╘══════════════════════════════════════════════════════════════════════════════╛
5
pip install safety
8

--bare

仅输出易受攻击的软件包。

示例

╒══════════════════════════════════════════════════════════════════════════════╕
│                                                                              │
│                               /$$$$$$            /$$                         │
│                              /$$__  $$|$$                         │
│           /$$$$$$$  /$$$$$$|$$\__//$$$$$$  /$$$$$$   /$$   /$$           │
│          /$$_____/ |____  $$|$$$$   /$$__  $$|_  $$_/  |$$|$$           │
│         |$$$$$$   /$$$$$$$|$$_/  |$$$$$$$$|$$|$$|$$           │
│          \____  $$ /$$__  $$|$$|$$_____/  |$$ /$$|$$|$$           │
│          /$$$$$$$/|$$$$$$$|$$|$$$$$$$  |$$$$/|$$$$$$$           │
│         |_______/  \_______/|__/     \_______/   \___/   \____  $$           │
│                                                          /$$|$$           │
│                                                         |$$$$$$/           │
│  by pyup.io                                              \______/            │
│                                                                              │
╞══════════════════════════════════════════════════════════════════════════════╡
│ REPORT                                                                       │
╞══════════════════════════════════════════════════════════════════════════════╡
│ No known security vulnerabilities found.                                     │
╘══════════════════════════════════════════════════════════════════════════════╛
7
╒══════════════════════════════════════════════════════════════════════════════╕
│                                                                              │
│                               /$$$$$$            /$$                         │
│                              /$$__  $$|$$                         │
│           /$$$$$$$  /$$$$$$|$$\__//$$$$$$  /$$$$$$   /$$   /$$           │
│          /$$_____/ |____  $$|$$$$   /$$__  $$|_  $$_/  |$$|$$           │
│         |$$$$$$   /$$$$$$$|$$_/  |$$$$$$$$|$$|$$|$$           │
│          \____  $$ /$$__  $$|$$|$$_____/  |$$ /$$|$$|$$           │
│          /$$$$$$$/|$$$$$$$|$$|$$$$$$$  |$$$$/|$$$$$$$           │
│         |_______/  \_______/|__/     \_______/   \___/   \____  $$           │
│                                                          /$$|$$           │
│                                                         |$$$$$$/           │
│  by pyup.io                                              \______/            │
│                                                                              │
╞══════════════════════════════════════════════════════════════════════════════╡
│ REPORT                                                                       │
╞══════════════════════════════════════════════════════════════════════════════╡
│ No known security vulnerabilities found.                                     │
╘══════════════════════════════════════════════════════════════════════════════╛
8
< H1> 历史

1.8.5(2019-02-04)

  • 用完整的报告包装文字(谢谢@mgedmin)
  • 添加了dockerfile和自述文件说明(感谢@ayeks)
  • 删除对pip的api依赖(感谢@benjaminp)

1.8.4(2018-08-03)

  • 由于安全漏洞,将加密依赖项从1.9版更新到2.3版

1.8.3b(2018-07-24)

  • 在分析请求文件时允许Unicode和非Unicode类型编码

1.8.2(2018-07-10)

  • 修复了Unicode错误

1.8.1(2018-04-06)

  • 修复了dparse依赖项的打包错误

1.8.0(2018-04-05)

  • 安全现在支持PIP 10

1.7.0(2018-02-03)

  • 安全性现在显示一个文件名,如果它发现一个未固定的需求。谢谢@nnadeau
  • 删除了对Python2.6和Python3.3的官方支持。谢谢@nnadeau

1.6.1(2017-10-20)

  • 修正了导致cli在需求文件/stdin上失败的错误。

1.6.0(2017-10-20)

  • 添加了一个当前使用的DB指示器
  • 添加了一个包计数检查了多少个包
  • 允许同一库的多个版本。谢谢你这位大人物

1.5.1(2017-07-20)

  • 修正了未固定VCS要求错误。这是一个回归,请参见https://github.com/pyupio/safety/issues/72" rel="nofollow">https://github.com/pyupio/safety/issues/72

1.5.0(2017-07-19)

  • 内部重构。删除了对setuptools的依赖,并切换到新的dparse库。

1.4.1(2017-07-04)

  • 修正了在python 2.7for windows上由于缺少strty而导致安全检查返回的错误。

1.4.0(2017-04-21)

  • 增加了通过--ignore/-i标志按ID忽略一个(或多个)漏洞的功能。

1.3.0(2017-04-21)

  • 增加了输出格式。
  • 向命令行界面添加了一些帮助文本。
  • 修复了使用时导致具有未固定依赖项的需求文件失败的错误 最新的setuptools版本。

1.2.0(2017-04-06)

  • 添加了json作为输出格式。与--json标志一起使用。谢谢@stype。

1.1.1(2017-03-27)

  • 通过stdin馈送时的固定终端尺寸检测。

1.1.0(2017-03-23)

  • 兼容性发布。安全性现在应该在MacOS、Linux和Windows上运行,使用Python2.7、3.3-3.6。 在Linux上,尽最大努力提供Python2.6支持。

1.0.2(2017-03-23)

  • 修正了python 2上的另一个错误。获取终端大小的回退功能工作不正常。

1.0.1(2017-03-23)

  • 修复了Python2上的错误,Python3中引入了fileNotFounderror。

1.0.0(2017-03-22)

  • 增加了终端尺寸检测。少于80列的终端现在应该显示更好的报告。
  • 添加了一个选项,用于从文件系统或通过http(s)可访问的镜像加载数据库。 这可以通过使用--db标志来完成。
  • 添加了一个使用pyup.io的漏洞数据库的API密钥选项。
  • 添加了在本地缓存数据库2小时的选项。默认情况仍然是不使用缓存。使用--cache标志。

0.6.0(2017-03-10)

  • 使需求解析器更加健壮。对于可编辑的需求,解析器不应该再失败 以及包url提供的要求。
  • 运行安全需要setuptools>;=16

0.5.1(2016-11-08)

  • 修正了并非所有需求文件都被正确读取的错误。

0.5.0(2016-11-08)

  • 添加了从文件中读取要求的选项。

0.4.0(2016-11-07)

  • 从stdin读取时过滤掉非要求。

0.3.0(2016-10-28)

  • 添加了从stdin读取的选项。

0.2.2(2016-10-21)

  • 修复Python2.6和2.7上的导入错误。

0.2.1(2016-10-21)

  • 修复包装错误。

0.2.0(2016-10-20)

  • 发布第一个原型。

0.1.0(2016-10-19)

  • pypi上的第一个版本。

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

推荐PyPI第三方库


热门话题
java限制C++代码访问JNI中的某些类   Android上的java DateFormat:不可解析的日期   通过json进行java迭代,并为其他请求调用多个API   Netbeans中的java JavaFX项目引发异常“输入流不能为null”   多线程Java newFixedThreadPool解释   |在java字符串中无法识别。split()方法   Java中的原始包装器类是否被视为引用类型?   Java swing。如何在intellij idea GUI设计工具中重写组件方法   数组乘矩阵   java将30GB的XML文件分割成小块XML   java通过一棵树递归找到一个节点,并返回指向该节点的路径   java如何将可观察的<Observable<List<T>>转换为可观察的<List<T>>   使用java在web服务器上更改php文件中的字符串?   java希望开发像tomcat这样的servlet容器   java希望提高编程的数学技能