
PHP स्थैतिक अनुप्रयोग सुरक्षा परीक्षण (SAST) उपकरण जो अनुकूलन योग्य नियमों और कॉन्फ़िगरेशन का उपयोग करके XSS, SQL इंजेक्शन और अन्य कमजोरियों का पता लगाने के लिए टेंट विश्लेषण करता है।
PHP के लिए एक स्थैतिक अनुप्रयोग सुरक्षा परीक्षण (SAST)
कई विकल्प उपलब्ध हैं, वह चुनें जो आपके उपयोग के मामले में सबसे उपयुक्त हो।
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 के साथ पैकेज स्थापित करें, आमतौर पर जब अपने PHP प्रोजेक्ट की लाइब्रेरी के रूप में progpilot का उपयोग कर रहे हों:
composer require --dev designsecurity/progpilot
progpilot विश्लेषण को कॉन्फ़िगर और अनुकूलित करने के लिए yaml कॉन्फ़िगरेशन फ़ाइल का उपयोग करें (यह उदाहरण देखें) अन्यथा डिफ़ॉल्ट कॉन्फ़िगरेशन का उपयोग किया जाएगा, विशेष रूप से मानक taint कॉन्फ़िगरेशन डेटा के साथ।
progpilot कमांड तर्क के रूप में विश्लेषण की जाने वाली फ़ाइलों और फ़ोल्डरों का पथ लेता है और वैकल्पिक रूप से एक कॉन्फ़िगरेशन फ़ाइल:
# कॉन्फ़िग फ़ाइल के बिना
progpilot example1.php example2.php folder1/ folder2/
# कॉन्फ़िग फ़ाइल के साथ
progpilot --configuration configuration.yml example1.php example2.php folder1/ folder2/
यदि आपने इसे composer के साथ स्थापित किया है, तो प्रोग्राम vendor/bin/progpilot पर स्थित होगा।
PHP कोड के अंदर progpilot का उपयोग करना भी संभव है। अधिक जानकारी के लिए 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 फ़ोल्डर में हैं। अधिक उदाहरणों के लिए इस पृष्ठ को भी देखें।
विश्लेषण किए जाने वाले एप्लिकेशन के संदर्भ के अनुसार taint विश्लेषण कॉन्फ़िगरेशन (sinks, sources, sanitizers और validators की परिभाषाएँ) को अनुकूलित करने की दृढ़ता से अनुशंसा की जाती है। निम्नलिखित विनिर्देश में, सुपरग्लोबल चर _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 के विकास के बारे में और जानें।