BANDIT(1) Bandit BANDIT(1)

bandit - ابزار بررسی امنیتی و تحلیل ایستای کد پایتون

[-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 ...]]

bandit ابزاری است که برای یافتن مشکلات امنیتی رایج در کدهای پایتون طراحی شده است. برای انجام این کار، بندیت هر فایل را پردازش کرده، از روی آن یک درخت نحو انتزاعی (AST) ایجاد می‌کند و افزونه‌های مناسب را روی گره‌های AST به اجرا درمی‌آورد. پس از پایان پایش تمام فایل‌ها، بندیت گزارش نهایی را تولید می‌کند.

نمایش این پیام راهنما و خروج
یافتن و پردازش بازگشتی فایل‌ها در زیرشاخه‌ها
تجمیع خروجی بر پایه نوع آسیب‌پذیری (پیش‌فرض) یا نام فایل
حداکثر تعداد خطوط کد نمایشی پیرامون هر مشکل امنیتی
فایل پیکربندی اختیاری جهت انتخاب افزونه‌ها و بازنویسی مقادیر پیش‌فرض
پروفایل مورد استفاده (پیش‌فرض: اجرای تمام آزمون‌ها)
فهرستی از شناسه‌های آزمون (جداشده با کاما) برای اجرا
فهرستی از شناسه‌های آزمون (جداشده با کاما) جهت نادیده گرفتن
گزارش مواردی با سطح شدت مشخص‌شده یا بالاتر (برای سطح پایین: -l, برای سطح متوسط: -ll, برای سطح بالا: -lll)
گزارش تنها مواردی با سطح شدت معین یا بالاتر. مقادیر "all" و "low" احتمالاً خروجی یکسانی ایجاد می‌کنند، اما ممکن است قواعد تعریف‌نشده‌ای وجود داشته باشد که در "low" فهرست نشوند.
گزارش مواردی با سطح اطمینان مشخص‌شده یا بالاتر (برای سطح پایین: -i, برای سطح متوسط: -ii, برای سطح بالا: -iii)
گزارش تنها مواردی با سطح اطمینان معین یا بالاتر. مقادیر "all" و "low" احتمالاً خروجی یکسانی ایجاد می‌کنند، اما ممکن است قواعد تعریف‌نشده‌ای وجود داشته باشد که در "low" فهرست نشوند.
تعیین قالب‌بندی خروجی
تعیین الگوی پیام خروجی (فقط هنگام استفاده از --format custom قابل استفاده است)؛ برای مشاهده مقادیر در دسترس بخش «قالب‌بندی سفارشی» را بررسی کنید.
نوشتن گزارش در فایل مشخص‌شده
نمایش اطلاعات اضافی مانند فایل‌های مستثنی‌شده و واردشده
فعال کردن حالت اشکال‌زدایی
تنها نمایش خروجی در صورت وقوع خطا
صرف‌نظر نکردن از خطوط دارای توضیح # nosec
فهرستی از مسیرهای جداشده با کاما (با پشتیبانی از الگوهای glob) جهت نادیده گرفتن در پویش (توجه داشته باشید که این مسیرها علاوه بر مسیرهای مستثنی‌شده در فایل پیکربندی اعمال می‌شوند) (پیش‌فرض: .svn,CVS,.bzr,.hg,.git,__pycache__,.tox,.eggs,*.egg)
مسیر گزارش مبنا (Baseline) جهت مقایسه نتایج جدید با آن (تنها فایل‌های با قالب JSON پذیرفته می‌شوند)
مسیر فایل .bandit که آرگومان‌های خط فرمان را تامین می‌کند
خروج با کد وضعیت صفر، حتی اگر مواردی کشف شده باشد
نمایش شماره نسخه برنامه و خروج

برچسب‌های موجود:

{abspath}, {relpath}, {line}, {test_id}, {severity}, {msg}, {confidence}, {range}

نمونه کاربرد:

الگوی پیش‌فرض:

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

.bandit
فایلی که آرگومان‌های خط فرمان را تعیین می‌کند
/etc/bandit/bandit.yaml
فایل پیکربندی قدیمی بندیت

نمونه استفاده در کل درخت کد:

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 -

pylint(1)

PyCQA

2026, Bandit Developers

February 25, 2026