Основы
Сегодня мы поговорим о Bandit, инструменте статического анализа Python, который рассматривает ваш код для возможных недостатков безопасности. Мы будем использовать Bandit, давайте создадим виртуальную среду и используем PIP для установки Bandit.
python -m venv venv source venv/bin/activate pip install bandit
Давайте используем следующее приложение ниже в качестве примера.
from os import system system('sudo su')
Очевидно, что использование Sudo Su в процессе оболочки не является хорошей практикой, но мы просто демонстрируем возможности Bandit. Итак, давайте запустим бандит против нашего файла.
bandit app_name.py
Ниже приведен пример ответа
Test results: >> Issue: [B605:start_process_with_a_shell] Starting a process with a shell: Seems safe, but may be changed in the future, consider rewriting without shell Severity: Low Confidence: High Location: bad.py:3 More Info: https://bandit.readthedocs.io/en/latest/plugins/b605_start_process_with_a_shell.html 2 3 system('sudo su') -------------------------------------------------- >> Issue: [B607:start_process_with_partial_path] Starting a process with a partial executable path Severity: Low Confidence: High Location: bad.py:3 More Info: https://bandit.readthedocs.io/en/latest/plugins/b607_start_process_with_partial_path.html 2 3 system('sudo su') -------------------------------------------------- Code scanned: Total lines of code: 2 Total lines skipped (#nosec): 0 Run metrics: Total issues (by severity): Undefined: 0.0 Low: 2.0 Medium: 0.0 High: 0.0 Total issues (by confidence): Undefined: 0.0 Low: 0.0 Medium: 0.0 High: 2.0 Files skipped (0):
Это довольно приятно, что дает нам все необходимые результаты. Мы можем использовать эти результаты различными способами, но в том, что я делаю, это Grep отчет и посмотреть, есть ли какие -либо «высокие или средние» элементы тяжести, а затем убить трубопровод CI/CD.
Реализация VSCODE
В vscode вы можете использовать CMD+Shift+P, в то время как в вашем приложении Python и выберите Linter, и выберите Bandit, вас могут попросить установить его, выберите «Да», убедитесь, что вы сказали vscode снова использовать бандит, а теперь и теперь , если вы будете зависать над отмеченным текстом, вы увидите ошибку/предупреждения.
Оригинал: “https://dev.to/getsec/integrate-static-security-checking-for-python-4i59”