اگر شما هم از توسعه دهندگان PHP هستید یا با پروژه های مبتنی بر این زبان سروکار دارید، حتماً میدونید که امنیت کدها چقدر اهمیت داره... باگهای امنیتی میتونن به راحتی به یک کابوس برای کسب و کار تبدیل بشن، مخصوصا از نوع باج افزار/Ransomware اش!
اما خب ابزارهایی وجود دارن که به ما کمک میکنن قبل از رسیدن به مرحله production، مشکلات امنیتی رو شناسایی کنیم... یک خانواده از این ابزارها Security linter ها هستن که با اسکن static کدها، حفره ها و اسیب پذیریهای امنیتی رو برنامه نویس ایجاد کرده رو شنایی و گزارش می کنند.
یکی از این ابزارها، PHP Security Linter هستش که دست ساز خودم هست:
این ابزار یک Static analysis tool (تحلیل ایستای کد) برای زبان PHP هست که با اسکن کدها، آسیب پذیری های امنیتی رو بر اساس استانداردهای CIS و OWASP شناسایی میکنه. یعنی بکمک این ابزار و بدون نیاز به اجرای کد، میتونید مشکلاتی مثل SQL Injection، XSS، قرار دادن اطلاعات حساس در کد و غیره... رو پیدا کنید.
آدرس مخزن: https://github.com/Yousha/php-security-linter
چرا از این ابزار استفاده کنیم؟
پشتیبانی از بیش از ۲۰۰ قانون امنیتی (مطابق با CIS و OWASP)
سریع و سبک: بدون اجرای کد، آسیب پذیری ها رو تشخیص میده.
پشتیبانی از PHP 7.4 و 8.3
خروجی های متنوع: هم بصورت متن در کنسول و هم JSON.
قابلیت شخصی سازی: میتونید قوانین خودتون رو اضافه یا برخی رو غیرفعال کنید.
مناسب برای DevSecOps: به راحتی با DevSecOps ادغام میشه.
با حداقل dependency و سبک!
نصب و استفاده
نصبش بسیار سادست، فقط کافیه با Composer اونرو به پروژه اضافه کنید:
composer require --dev yousha/php-security-linter
بعد برای اسکن یک پوشه:
php vendor/bin/php-security-linter --path ./src
اگرم میخوایید پوشه هایی مثل vendor
یا tests
رو اسکن نکنید:
php vendor/bin/php-security-linter --path ./app --exclude vendor,tests
مثال خروجی ابزار
وقتی اسکن انجام میشه، نتیجه رو به صورت خوانا مشاهده میکنید:
Scan Results
========================================
File: /src/auth.php
✗ [CRITICAL] OWASP: SQL Injection vulnerability detected (Line 42)
✗ [HIGH] CIS: Hardcoded database credentials (Line 15)
File: /src/utils.php
✗ [MEDIUM] OWASP: XSS vulnerability possible (Line 88)
Summary: Scanned 24 files, found 3 potential issues.