Safety如何安装使用

这篇文章将为大家详细讲解有关Safety如何安装使用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

Safety

Safety是一款功能强大的漏洞检测工具,可以帮助广大研究人员检测设备上已安装依赖组件中存在的已知安全漏洞。默认配置下,Safety使用的是开放Python漏洞数据库-Safety DB,但是大家也可以使用--key选项来更新工具,并使用pyup.io的Safety API

工具安装

我们可以使用pip来安装Safety,不过请大家记住,当前版本的Safety仅支持Python 3.5及其更高版本的环境:

pip install safety

工具使用

运行下列命令,即可判断当前以选择的安装了依赖组件的虚拟环境,并检测已知的安全漏洞:

safety check

运行之后,我们将看到如下图所示的报告界面:

Safety如何安装使用  safety 第1张

现在,我们来安装一些存在安全问题的依赖组件:

pip install insecure-package

接下来,再次运行漏洞检测命令:

safety check

这一次的扫描结果如下:

Safety如何安装使用  safety 第2张

工具使用样例

读取工具所需文件

跟pip一样,Safety能够读取本地requirement文件:

safety check -r requirements.txt

从Stdin读取

Safety还能够使用--stdin参数来从Stdin读取输入数据。如需检测一个本地依赖文件,可运行下列命令:

cat requirements.txt | safety check --stdin

或者,从pip freeze的输出读取输入:

pip freeze | safety check --stdin

或者,检测一个单一依赖包:

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

在Docker中使用Safety

Safety还能够以Docker容器的形式运行:

echo "insecure-package==0.1" | docker run -i --rm pyupio/safety safety check --stdin

cat requirements.txt | docker run -i --rm pyupio/safety safety check --stdin

使用Safety源码

Safety的源代码还提供了某些额外的安全功能,安装完成之后,我们就能够使用常规命令行版本的Safety了。点击【这里】即可获取Safety源代码。

通过CI服务使用Safety

Safety还能够配合CI管道一起使用,如果扫描到了一个漏洞的话,它会返回一个非零退出状态。

Travis:

install:

  - pip install safety

 

script:

  - safety check

Gitlab CI:

safety:

  script:

    - pip install safety

- safety check

Tox:

[tox]

envlist = py37

 

[testenv]

deps =

    safety

    pytest

commands =

    safety check

Pytest

深度GitHub整合

如果你想要将Safety跟你自己的GitHub库进行深度整合的话,可以直接使用pyup.io中的Safety服务,即Safety CI。Safety CI能够检测GitHub库中依赖组件的commit和pull request,并寻找已知的安全漏洞,并将检测结果和状态显示在GitHub中。

Safety如何安装使用  safety 第3张

在产品中使用Safety

Safety是免费且开源的,它的底层开放数据库每个月还会更新一次。为了访问到所有最新添加进去的安全漏洞,我们需要使用一个Safety API密钥以及一个付费的pyup.io账号(约99美元)。

工具选项

--key

即pyup.io的漏洞数据库API密钥,需要在SAFETY_API_KEY环境变量中设置:

safety check --key=12345-ABCDEFGH

--db

指向本地数据库的目录路径,其中包括insecure.json和insecure_full.json:

safety check --db=/home/safety-db/data

--proxy-host

代理主机的IP或DNS

--proxy-port

代理端口号

--proxy-protocol

代理协议(https或http)

--json

JSON格式的漏洞报告输出:

safety check --json

[

    [

        "django",

        "<1.2.2",

        "1.2",

        "Cross-site scripting (XSS) vulnerability in Django 1.2.x before 1.2.2 allows remote attackers to inject arbitrary web script or HTML via a csrfmiddlewaretoken (aka csrf_token) cookie.",

        "25701"

    ]

]

--full-report

获取完整的漏洞扫描报告,还包括安全建议:

safety check --full-report

+==============================================================================+

|                                                                              |

|                               /$$$$$$            /$$                         |

|                              /$$__  $$          | $$                         |

|           /$$$$$$$  /$$$$$$ | $$  \__//$$$$$$  /$$$$$$   /$$   /$$           |

|          /$$_____/ |____  $$| $$$$   /$$__  $$|_  $$_/  | $$  | $$           |

|         |  $$$$$$   /$$$$$$$| $$_/  | $$$$$$$$  | $$    | $$  | $$           |

|          \____  $$ /$$__  $$| $$    | $$_____/  | $$ /$$| $$  | $$           |

|          /$$$$$$$/|  $$$$$$$| $$    |  $$$$$$$  |  $$$$/|  $$$$$$$           |

|         |_______/  \_______/|__/     \_______/   \___/   \____  $$           |

|                                                          /$$  | $$           |

|                                                         |  $$$$$$/           |

|  by pyup.io                                              \______/            |

|                                                                              |

+==============================================================================+

| REPORT                                                                       |

+============================+===========+==========================+==========+

| package                    | installed | affected                 | ID       |

+============================+===========+==========================+==========+

| django                     | 1.2       | <1.2.2                   | 25701    |

+==============================================================================+

| Cross-site scripting (XSS) vulnerability in Django 1.2.x before 1.2.2 allows |

|  remote attackers to inject arbitrary web script or HTML via a csrfmiddlewar |

| etoken (aka csrf_token) cookie.                                              |

+==============================================================================+

--bare

仅输出包含漏洞的依赖包,可结合其他工具一起使用:

safety check --bare

cryptography django

--cache

漏洞数据库本地缓存,有效时长为两小时:

safety check --cache

--stdin

从stdin读取输入数据:

cat requirements.txt | safety check --stdin

pip freeze | safety check --stdin

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

--output, -o

将扫描结果输出至文件:

safety check -o insecure_report.txt

safety check --output --json insecure_report.json

开源许可证协议

本项目的开发与发布遵循MIT开源许可证协议。

关于“Safety如何安装使用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:niceseo99@gmail.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

评论

有免费节点资源,我们会通知你!加入纸飞机订阅群

×
天气预报查看日历分享网页手机扫码留言评论Telegram