您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關Safety如何安裝使用,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
Safety是一款功能強大的漏洞檢測工具,可以幫助廣大研究人員檢測設備上已安裝依賴組件中存在的已知安全漏洞。默認配置下,Safety使用的是開放Python漏洞數據庫-Safety DB,但是大家也可以使用--key選項來更新工具,并使用pyup.io的Safety API。
我們可以使用pip來安裝Safety,不過請大家記住,當前版本的Safety僅支持Python 3.5及其更高版本的環境:
pip install safety
運行下列命令,即可判斷當前以選擇的安裝了依賴組件的虛擬環境,并檢測已知的安全漏洞:
safety check
運行之后,我們將看到如下圖所示的報告界面:
現在,我們來安裝一些存在安全問題的依賴組件:
pip install insecure-package
接下來,再次運行漏洞檢測命令:
safety check
這一次的掃描結果如下:
跟pip一樣,Safety能夠讀取本地requirement文件:
safety check -r requirements.txt
Safety還能夠使用--stdin參數來從Stdin讀取輸入數據。如需檢測一個本地依賴文件,可運行下列命令:
cat requirements.txt | safety check --stdin
或者,從pip freeze的輸出讀取輸入:
pip freeze | safety check --stdin
或者,檢測一個單一依賴包:
echo "insecure-package==0.1" | safety check --stdin
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管道一起使用,如果掃描到了一個漏洞的話,它會返回一個非零退出狀態。
install: - pip install safety script: - safety check
safety: script: - pip install safety - safety check
[tox] envlist = py37 [testenv] deps = safety pytest commands = safety check Pytest
如果你想要將Safety跟你自己的GitHub庫進行深度整合的話,可以直接使用pyup.io中的Safety服務,即Safety CI。Safety CI能夠檢測GitHub庫中依賴組件的commit和pull request,并尋找已知的安全漏洞,并將檢測結果和狀態顯示在GitHub中。
Safety是免費且開源的,它的底層開放數據庫每個月還會更新一次。為了訪問到所有最新添加進去的安全漏洞,我們需要使用一個Safety API密鑰以及一個付費的pyup.io賬號(約99美元)。
即pyup.io的漏洞數據庫API密鑰,需要在SAFETY_API_KEY環境變量中設置:
safety check --key=12345-ABCDEFGH
指向本地數據庫的目錄路徑,其中包括insecure.json和insecure_full.json:
safety check --db=/home/safety-db/data
代理主機的IP或DNS
--proxy-port
代理端口號
--proxy-protocol
代理協議(https或http)
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" ] ]
獲取完整的漏洞掃描報告,還包括安全建議:
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. | +==============================================================================+
僅輸出包含漏洞的依賴包,可結合其他工具一起使用:
safety check --bare cryptography django
漏洞數據庫本地緩存,有效時長為兩小時:
safety check --cache
從stdin讀取輸入數據:
cat requirements.txt | safety check --stdin pip freeze | safety check --stdin echo "insecure-package==0.1" | safety check --stdin
將掃描結果輸出至文件:
safety check -o insecure_report.txt safety check --output --json insecure_report.json
本項目的開發與發布遵循MIT開源許可證協議。
關于“Safety如何安裝使用”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。