पर पुल रिक्वेस्ट में उभरने वाली एक जाँच हर कामकाजी दिन टीम के रास्ते में — अच्छे अर्थ में — खड़ी हो जाती है। यह हर कमिट पर वही डिटेक्टर चलाता है जो वेब स्कैनर चलाता है: आपके अपने रनर के भीतर, ताकि अप्रकाशित कोड आपकी मशीन पर ही रहे।
किसी सुरक्षा स्कैनर के बारे में ज़्यादातर बातचीत इसी आपत्ति पर ख़त्म होती है, इसलिए यह हक़ रखती है कि इसे सबसे पहले और दो-टूक कहा जाए।
201 डिटेक्टरों वाला इंजन आपके रनर पर उतरता है और वहीं चलता है। SaferICO को वापस जो भेजा जाता है वह प्रति गंभीरता एक संख्या और फ़ाइल का नाम तथा पंक्ति संख्या रखने वाले नियम-आईडी हैं — कोड ख़ुद कभी नहीं, और प्रमाण के पाठ भी कभी नहीं, क्योंकि वे आपके सोर्स से उद्धरण लेते हैं।
टेस्ट सूट जाती हुई रिक्वेस्ट के बॉडी को उसी सोर्स के टुकड़ों के लिए खंगालता है जिसे उसने अभी स्कैन किया। यह दावा एक वाक्य नहीं, हर दौड़ पर जाँची जाने वाली एक विशेषता है।
किसी असली कोडबेस पर इंजन को इससे कहीं ज़्यादा चाहिए। GitHub रनर पर एक पूरा कोर होता है और समय की कोई सीमा नहीं, इसलिए आपके कमिट पर चलने वाला स्कैन छोटा किया हुआ नहीं, पूरा स्कैन होता है।
रनर हर दौड़ पर मौजूदा इंजन खींचता है। एक साल पहले तय किया गया वर्कफ़्लो आज के डिटेक्टर पा जाता है।
.github/workflows/ में एक अकेली फ़ाइल। रनर कोई निर्भरता-वृक्ष नहीं उतारता — जो सुरक्षा टूल अपनी निर्भरताएँ आपकी पाइपलाइन में घसीट लाए, वह अपने ही ख़िलाफ़ दलील बन जाता है।
एक वैकल्पिक आख़िरी क़दम SARIF अपलोड करता है, जिससे फ़ाइंडिंग्स GitHub के Security टैब में और सीधे diff के ऊपर दिखती हैं — डेवलपर उन्हें सचमुच वहीं पढ़ता है।
टूल स्वयं (स्कैनर, कंट्रोल पैनल, SAFI वर्कस्पेस) फ़िलहाल अंग्रेज़ी इंटरफ़ेस में चलते हैं। ये पेज वहाँ जाने से पहले हर चीज़ हिन्दी में समझाते हैं।
एक फ़ाइल, एक सीक्रेट, और एक सीमा जो तय करती है कि बिल्ड कब टूटेगा।
डिटेक्टर पहले से /sfi-engine.js पर सबके लिए खुले हैं और हम इसके उलट कोई दावा नहीं करते। यहाँ जो बेचा जा रहा है वह लाइसेंस है, इतिहास का रिकॉर्ड है, वह नीति है जो तय करती है कि बिल्ड टूटेगा या नहीं, और पूरे संगठन में दिखने वाला नज़ारा।
.github/workflows/ में आप एक ही फ़ाइल रखते हैं: कोड खींचा जाता है, sfi-ci.mjs उतारा और चलाया जाता है, और वैकल्पिक रूप से SARIF अपलोड होता है। पूरा पाठ ख़ुद उसी पेज पर कॉपी करने के लिए तैयार रखा है।
रनर ख़ुद एक अकेली फ़ाइल है जिसे आप चलाने से पहले पढ़ सकते हैं: https://saferico.com/sfi-ci.mjs
कुंजी आप अपने खाते के API कुंजियाँ टैब से बनाते हैं और अपनी रिपॉज़िटरी के secrets में SAFERICO_API_KEY के नाम से जोड़ देते हैं।
प्रति खाता 5 कुंजियों तक, हर एक रद्द की जा सकती है और अपना कॉल-काउंटर रखती है।
इंजन जो गंभीरताएँ बताता है: गंभीर, उच्च, मध्यम, निम्न, सूचना। डिफ़ॉल्ट है «उच्च और उससे ऊपर पर तोड़ो»।
पुराना ढेर साफ़ करते समय सीमा नीचे कीजिए, और साफ़ हो जाने के बाद ऊपर। जिस सीमा को कोई पार ही न कर पाए वह एक हफ़्ते में बंद कर दी जाती है, और बंद की हुई जाँच किसी चीज़ की रक्षा नहीं करती।
कॉन्ट्रैक्ट का पता पेस्ट करें; जोखिम में पड़ने से पहले मालिक की शक्तियाँ, लिक्विडिटी और बिक्री-सिमुलेशन का नतीजा देखें। प्रति स्कैन एक छोटा शुल्क हस्ताक्षर से पहले दिखाया जाता है — और किसी भी सदस्यता में यह असीमित रूप से शामिल है।