मुख्य कंटेंट तक स्किप करें
Version: नवीनतम

PHP SDK सुरक्षा और स्थिति

SDK अविश्वसनीय प्रोजेक्ट फ़ाइलों को पढ़ता है और remediation सक्षम होने पर उन्हें बदल सकता है। प्रत्येक finding के लिए स्पष्ट लक्ष्य, नियंत्रित संग्रहण, और समीक्षा पथ के साथ स्कैन को विशेषाधिकार प्राप्त कार्रवाई मानें।

प्रक्रिया-वैश्विक कॉन्फ़िगरेशन

Scanner अपना कॉन्फ़िगरेशन और वर्तमान रिपोर्ट स्थिर स्थिति में संग्रहीत करता है। Fluent setters नया Scanner instance लौटाते हैं, लेकिन वे उस साझा प्रक्रिया स्थिति को बदलते हैं।

$first = new Scanner();
$second = $first->setPathScan('/srv/project-a');

// Both objects observe the same Scanner configuration.

हर PHP प्रक्रिया में एक समय में एक स्कैन चलाएं। background jobs, concurrent requests, या tenant isolation के लिए नई CLI प्रक्रिया का उपयोग करें। लंबे समय तक चलने वाले worker को प्रत्येक run से पहले पूरा कॉन्फ़िगरेशन लागू करना चाहिए और पिछले job की स्थिति का पुन: उपयोग करने से बचना चाहिए।

run() स्कैन की शुरुआत में रिपोर्ट रीसेट करता है। यह विस्तृत स्कैनर कॉन्फ़िगरेशन रीसेट नहीं करता। defaults पुनर्स्थापित करने के लिए object construction पर निर्भर न रहें।

फ़ाइल क्रियाएं

डिफ़ॉल्ट prompt व्यवहार interactive और silent runs के बीच भिन्न होता है। अनअटेंडेड कोड में स्पष्ट रूप से कार्रवाई चुनें:

$report = (new Scanner())
->setPathScan('/srv/app')
->setSilentMode()
->setAutoSkip()
->run();

फ़ाइलें बदलने वाली किसी भी कार्रवाई के लिए enableBackups() कॉल करें और setPathBackups() को लक्ष्य के बाहर की लिखने योग्य डायरेक्टरी पर सेट करें। quarantine, whitelist, deobfuscation, reports, logs, durable findings, और checkpoints को स्कैन किए गए प्रोजेक्ट के बाहर रखें, ताकि स्कैनर अपने ही आउटपुट का निरीक्षण न करे।

स्वचालित clean, quarantine, या delete सक्षम करने से पहले:

  1. एप्लिकेशन की प्रतिनिधि प्रतियों पर केवल-रिपोर्ट स्कैन चलाएं।
  2. हर run के लिए coverage, findings, और diagnostics जांचें।
  3. उसी खाते के तहत backup और restore प्रक्रियाओं का परीक्षण करें जो उत्पादन स्कैन चलाता है।
  4. लक्ष्य पथ को स्वीकृत प्रोजेक्ट roots तक सीमित रखें।

पथ और अनुमतियां

विश्वसनीय कॉन्फ़िगरेशन से absolute paths दें। setPathScan(), setPathReport(), या किसी अन्य path setter को कॉल करने से पहले अनुरोध से मिले पथों को normalize और authorize करें। SDK Path::get() के साथ पथ सामान्यीकृत करता है, लेकिन सामान्यीकरण आपके एप्लिकेशन की authorization boundary लागू नहीं करता।

स्कैनर को लक्ष्य पढ़ने और उसके नियंत्रित आउटपुट को लिखने के लिए आवश्यक न्यूनतम filesystem access के साथ चलाएं। वेब अनुरोध को ऐसे account के रूप में न चलाएं जो इच्छित deployment root के बाहर फ़ाइलें स्कैन या delete कर सकता हो।

नेटवर्क व्यवहार और ऑफ़लाइन संचालन

मुख्य code scanning एम्बेड की गई definitions का उपयोग करता है। Integrity verification और Maltrail domain definitions outbound HTTPS का उपयोग कर सकते हैं। स्कैनर सफल remote data को स्कैन लक्ष्य के बाहर operating-system cache में संग्रहीत करता है।

जब आपका परिवेश outbound traffic रोकता है, तो report diagnostics कैप्चर करें और सहेजें। विफल update cached definitions को सक्रिय छोड़ सकता है; रिपोर्ट उपलब्ध metadata को signature_indexes में रिकॉर्ड करती है। जब कोई network route मौजूद न हो, तब खाली diagnostics array मानकर न चलें।

विफलता नीति

run() से मिले false को परिचालन त्रुटि मानें। अपूर्ण coverage, diagnostics, और warnings को समीक्षा संकेत मानें। रिपोर्ट को इसके scan timestamp, target identity, Scanner::getVersion() से मिली scanner version, और किसी बाहरी job identifier के साथ संग्रहीत करें।

SDK पकड़े गए त्रुटि संदेशों को getLastError() के माध्यम से देता है। उन्हें सुरक्षित application log में लॉग करें। अविश्वसनीय उपयोगकर्ताओं को target paths, report contents, या raw error text न दिखाएं।