| BANDIT(1) | Bandit | BANDIT(1) |
نام (NAME)
bandit - ابزار بررسی امنیتی و تحلیل ایستای کد پایتون
خلاصه دستور (SYNOPSIS)
- bandit [-h] [-r] [-a {file,vuln}] [-n CONTEXT_LINES] [-c CONFIG_FILE]
- [-p PROFILE] [-t TESTS] [-s SKIPS] [-l] [-i] [-f {csv,custom,html,json,screen,txt,xml,yaml}] [--msg-template MSG_TEMPLATE] [-o [OUTPUT_FILE]] [-v] [-d] [-q] [--ignore-nosec] [-x EXCLUDED_PATHS] [-b BASELINE] [--ini INI_PATH] [--exit-zero] [--version] [targets [targets ...]]
توضیحات (DESCRIPTION)
bandit ابزاری است که برای یافتن مشکلات امنیتی رایج در کدهای پایتون طراحی شده است. برای انجام این کار، بندیت هر فایل را پردازش کرده، از روی آن یک درخت نحو انتزاعی (AST) ایجاد میکند و افزونههای مناسب را روی گرههای AST به اجرا درمیآورد. پس از پایان پایش تمام فایلها، بندیت گزارش نهایی را تولید میکند.
گزینهها (OPTIONS)
- -h, --help
- نمایش این پیام راهنما و خروج
- -r, --recursive
- یافتن و پردازش بازگشتی فایلها در زیرشاخهها
- -a {file,vuln}, --aggregate {file,vuln}
- تجمیع خروجی بر پایه نوع آسیبپذیری (پیشفرض) یا نام فایل
- -n CONTEXT_LINES, --number CONTEXT_LINES
- حداکثر تعداد خطوط کد نمایشی پیرامون هر مشکل امنیتی
- -c CONFIG_FILE, --configfile CONFIG_FILE
- فایل پیکربندی اختیاری جهت انتخاب افزونهها و بازنویسی مقادیر پیشفرض
- -p PROFILE, --profile PROFILE
- پروفایل مورد استفاده (پیشفرض: اجرای تمام آزمونها)
- -t TESTS, --tests TESTS
- فهرستی از شناسههای آزمون (جداشده با کاما) برای اجرا
- -s SKIPS, --skip SKIPS
- فهرستی از شناسههای آزمون (جداشده با کاما) جهت نادیده گرفتن
- -l, --level
- گزارش مواردی با سطح شدت مشخصشده یا بالاتر (برای سطح پایین: -l, برای سطح متوسط: -ll, برای سطح بالا: -lll)
- -l, --severity-level={all,high,medium,low}
- گزارش تنها مواردی با سطح شدت معین یا بالاتر. مقادیر "all" و "low" احتمالاً خروجی یکسانی ایجاد میکنند، اما ممکن است قواعد تعریفنشدهای وجود داشته باشد که در "low" فهرست نشوند.
- -i, --confidence
- گزارش مواردی با سطح اطمینان مشخصشده یا بالاتر (برای سطح پایین: -i, برای سطح متوسط: -ii, برای سطح بالا: -iii)
- -l, --confidence-level={all,high,medium,low}
- گزارش تنها مواردی با سطح اطمینان معین یا بالاتر. مقادیر "all" و "low" احتمالاً خروجی یکسانی ایجاد میکنند، اما ممکن است قواعد تعریفنشدهای وجود داشته باشد که در "low" فهرست نشوند.
- -f {csv,custom,html,json,sarif,screen,txt,xml,yaml}, --format {csv,custom,html,json,sarif,screen,txt,xml,yaml}
- تعیین قالببندی خروجی
- --msg-template MSG_TEMPLATE
- تعیین الگوی پیام خروجی (فقط هنگام استفاده از --format custom قابل استفاده است)؛ برای مشاهده مقادیر در دسترس بخش «قالببندی سفارشی» را بررسی کنید.
- -o OUTPUT_FILE, --output OUTPUT_FILE
- نوشتن گزارش در فایل مشخصشده
- -v, --verbose
- نمایش اطلاعات اضافی مانند فایلهای مستثنیشده و واردشده
- -d, --debug
- فعال کردن حالت اشکالزدایی
- -q, --quiet, --silent
- تنها نمایش خروجی در صورت وقوع خطا
- --ignore-nosec
- صرفنظر نکردن از خطوط دارای توضیح # nosec
- -x EXCLUDED_PATHS, --exclude EXCLUDED_PATHS
- فهرستی از مسیرهای جداشده با کاما (با پشتیبانی از الگوهای glob) جهت نادیده گرفتن در پویش (توجه داشته باشید که این مسیرها علاوه بر مسیرهای مستثنیشده در فایل پیکربندی اعمال میشوند) (پیشفرض: .svn,CVS,.bzr,.hg,.git,__pycache__,.tox,.eggs,*.egg)
- -b BASELINE, --baseline BASELINE
- مسیر گزارش مبنا (Baseline) جهت مقایسه نتایج جدید با آن (تنها فایلهای با قالب JSON پذیرفته میشوند)
- --ini INI_PATH
- مسیر فایل .bandit که آرگومانهای خط فرمان را تامین میکند
- --exit-zero
- خروج با کد وضعیت صفر، حتی اگر مواردی کشف شده باشد
- --version
- نمایش شماره نسخه برنامه و خروج
قالببندی سفارشی (CUSTOM FORMATTING)
برچسبهای موجود:
نمونه کاربرد:
bandit -r examples/ --format custom --msg-template "{abspath}:{line}: {test_id}[bandit]: {severity}: {msg}"
خروجی مشابه دستور زیر فراهم میکند:
bandit -r examples/ --format custom
برچسبها همچنین میتوانند به سبک متد string.format() پایتون قالببندی شوند:
bandit -r examples/ --format custom --msg-template "{relpath:20.20s}: {line:03}: {test_id:^8}: DEFECT: {msg:>20}"
برای اطلاعات بیشتر پیرامون روش قالببندی، مستندات پایتون را مشاهده کنید: https://docs.python.org/3/library/string.html
فایلها (FILES)
- .bandit
- فایلی که آرگومانهای خط فرمان را تعیین میکند
- /etc/bandit/bandit.yaml
- فایل پیکربندی قدیمی بندیت
مثالها (EXAMPLES)
نمونه استفاده در کل درخت کد:
bandit -r ~/your-repos/project
نمونه استفاده روی پوشه examples/ با نمایش سه خط زمینه و فقط گزارش مواردی با شدت بالا:
bandit examples/*.py -n 3 --severity-level=high
بندیت میتواند با پروفایلها اجرا شود. جهت اجرای بندیت روی پوشه examples تنها با افزونههای موجود در پروفایل ShellInjection:
bandit examples/*.py -p ShellInjection
همچنین بندیت از ارسال خطوط کد برای پویش از طریق ورودی استاندارد پشتیبانی میکند. برای اجرای بندیت با ورودی استاندارد:
cat examples/imports.py | bandit -
همچنین ببینید (SEE ALSO)
pylint(1)
نویسندگان (AUTHORS)
PyCQA
حق نشر (COPYRIGHT)
2026, Bandit Developers
| February 25, 2026 |