
أداة اختبار أمان التطبيقات الثابتة (SAST) بلغة PHP تقوم بتحليل التلوث للكشف عن ثغرات XSS، وحقن SQL، وغيرها من الثغرات باستخدام قواعد وإعدادات قابلة للتخصيص.
أداة اختبار أمان التطبيقات الثابتة (SAST) للغة PHP
تتوفر العديد من الخيارات، اختر ما يناسب حالتك الاستخدامية.
chmod +x progpilot_vX.Y.Z.phar
sudo mv progpilot_vX.Y.Z.phar /usr/local/bin/progpilot
docker build -t progpilot .
docker run -v $(pwd):/workspace progpilot /workspace/path/to/your/file.php
يجب أن يكون phar-composer.phar موجوداً في دليل مضمن في متغير البيئة $PATH:
git clone https://github.com/designsecurity/progpilot
cd progpilot
./build.sh
سيكون أرشيف phar الناتج موجوداً في مجلد builds في جذر هذا المشروع.
قم بتثبيت الحزمة باستخدام Composer، عادةً عند استخدام progpilot كمكتبة في مشروع PHP الخاص بك:
composer require --dev designsecurity/progpilot
استخدم ملف إعدادات بصيغة YAML (انظر هذا المثال) لتكوين وتخصيص تحليل progpilot، وإلا سيتم استخدام الإعدادات الافتراضية التي تتضمن بشكل خاص بيانات إعدادات التلوث القياسية.
يأخذ أمر progpilot كوسيطات المسار إلى الملفات والمجلدات المراد تحليلها، واختيارياً ملف إعدادات:
# بدون ملف إعدادات
progpilot example1.php example2.php folder1/ folder2/
# مع ملف إعدادات
progpilot --configuration configuration.yml example1.php example2.php folder1/ folder2/
إذا قمت بتثبيته باستخدام composer، فسيكون البرنامج موجوداً في vendor/bin/progpilot.
من الممكن أيضاً استخدام progpilot داخل كود PHP. لمزيد من المعلومات، انظر توثيق API.
استخدم هذا الكود لتحليل source_code1.php:
<?php
require_once './vendor/autoload.php';
$context = new \progpilot\Context;
$analyzer = new \progpilot\Analyzer;
$context->inputs->setFile("source_code1.php");
try {
$analyzer->run($context);
} catch (Exception $e) {
echo "Exception : ".$e->getMessage()."\n";
}
$results = $context->outputs->getResults();
var_dump($results);
عندما يحتوي source_code1.php على هذا الكود:
<?php
$var7 = $_GET["p"];
$var4 = $var7;
echo "$var4";
سيكون المخرج المبسط:
array(1) {
[0]=>
array(11) {
["source_name"]=>
array(1) {
[0]=>
string(5) "$var4"
}
["source_line"]=>
array(1) {
[0]=>
int(4)
}
["sink_name"]=>
string(4) "echo"
["sink_line"]=>
int(5)
["vuln_name"]=>
string(3) "xss"
}
}
جميع الملفات (composer.json, example1.php, source_code1.php) المستخدمة في هذا المثال موجودة في مجلد projects/example.
لمزيد من الأمثلة، انظر أيضاً هذه الصفحة.
يوصى بشدة بتخصيص إعدادات تحليل التلوث (تعريفات المصارف والمصادر والمعقمات والمُحَققات) وفقاً لسياق التطبيق المراد تحليله. في المواصفات التالية، تم تعريف المتغيرات العامة الفائقة _GET و _POST و _COOKIE على أنها غير موثوقة، وكذلك قيمة إرجاع الدالة shell_exec():
{
"sources": [
{"name": "_GET", "is_array": true, "language": "php"},
{"name": "_POST", "is_array": true, "language": "php"},
{"name": "_COOKIE", "is_array": true, "language": "php"},
{"name": "shell_exec", "is_function": true, "language": "php"}
]
}
انظر الإعدادات المتاحة في الفصل المقابل حول تحديد تحليل مخصص.
يمكن أيضاً إنشاء قواعد مخصصة، انظر الفصل المقابل حول القواعد المخصصة.
تعرف على المزيد حول تطوير Progpilot.