Secure coding
सुरक्षित कोडिंग कंप्यूटर सॉफ्टवेयर को इस तरह से विकसित करने का अभ्यास है जो सुरक्षा कमजोरियों के आकस्मिक परिचय से बचाता है। दोष, बग्स और लॉजिक खामियां लगातार आम तौर पर उपयोग की जाने वाली सॉफ्टवेयर कमजोरियों का प्राथमिक कारण हैं। हजारों रिपोर्ट की गई कमजोरियों के विश्लेषण के माध्यम से, सुरक्षा पेशेवरों ने पाया है कि अधिकांश कमजोरियां अपेक्षाकृत कम संख्या में सामान्य सॉफ्टवेयर प्रोग्रामिंग त्रुटियों से उत्पन्न होती हैं। असुरक्षित कोडिंग प्रथाओं की पहचान करके जो इन त्रुटियों का कारण बनती हैं और डेवलपर्स को सुरक्षित विकल्पों पर शिक्षित करके, संगठन परिनियोजन से पहले सॉफ़्टवेयर में कमजोरियों को काफी कम करने या समाप्त करने में मदद करने के लिए सक्रिय कदम उठा सकते हैं। कुछ विद्वानों ने सुझाव दिया है कि साइबर सुरक्षा से संबंधित खतरों का प्रभावी ढंग से सामना करने के लिए, उचित सुरक्षा को कोड किया जाना चाहिए या प्रणालियों में "बेक इन" किया जाना चाहिए। सॉफ्टवेयर में सुरक्षा डिजाइन किए जाने के साथ, यह सुनिश्चित करता है कि अंदरूनी हमलों के खिलाफ सुरक्षा होगी और अनुप्रयोग सुरक्षा के लिए खतरे को कम करता है। बफर-ओवरफ्लो रोकथाम बफर ओवरफ्लो, एक सामान्य सॉफ्टवेयर सुरक्षा भेद्यता, तब होती है जब एक प्रक्रिया एक निश्चित-लंबाई बफर से परे डेटा को संग्रहीत करने का प्रयास करती है। उदाहरण के लिए, यदि वस्तुओं को संग्रहीत करने के लिए 8 स्थान हैं, तो 9 वस्तुओं को संग्रहीत करने का प्रयास करने पर समस्या होगी। कंप्यूटर मेमोरी में अतिप्रवाहित डेटा अगले स्थान पर डेटा को अधिलेखित कर सकता है जिसके परिणामस्वरूप सुरक्षा भेद्यता (स्टैक स्मैशिंग) या प्रोग्राम समाप्ति (विभाजन दोष) हो सकती है। बफर ओवरफ्लो के लिए प्रवण सी प्रोग्राम का एक उदाहरण है 'वल्नरेबल फंक्शन' (चार * लार्ज _ यूजर _ इनपुट) {चार डीएसटी [एस. एम. ए. एल. एल.]; एस. आर. सी. पी. आई. (डीएसटी, लार्ज _ यूजर _ इनपुट);} यदि उपयोगकर्ता इनपुट गंतव्य बफर से बड़ा है, तो एक बफर ओवरफ्लो होगा। इस असुरक्षित प्रोग्राम को ठीक करने के लिए, एक संभावित बफर overflow.int सिकिओर _ फंक्शन (चार * यूजर _ इनपुट) को रोकने के लिए स्ट्रैंकपाई का उपयोग करें [चार dst [BUF _ SIZE];// अधिकतम BUF _ SIZE बाइट्स स्ट्रैंकपाई (dst, यूजर _ इनपुट, BUF _ SIZE);} एक अन्य सुरक्षित विकल्प है कि malloc.char * सिकिओर _ कॉपी (चार * src) {साइज _ t लेन = स्ट्र्लेन (src); चार * dst = (चार *) मैलॉक (लेन + 1); अगर (dst! = null) प्रारूप-स्ट्रिंग हमले की रोकथाम एक प्रारूप स्ट्रिंग हमला तब होता है जब एक दुर्भावनापूर्ण उपयोगकर्ता विशिष्ट इनपुट की आपूर्ति करता है जो अंततः एक फ़ंक्शन के लिए एक तर्क के रूप में दर्ज किया जाएगा जो स्वरूपण करता है, जैसे कि प्रिंटएफ ()। हमले में विरोधी को ढेर से पढ़ना या लिखना शामिल है। सी प्रिंटएफ फंक्शन आउटपुट को एस. टी. डी. आउट में लिखते हैं। यदि प्रिंटएफ फ़ंक्शन का पैरामीटर ठीक से प्रारूपित नहीं है, तो कई सुरक्षा बग पेश किए जा सकते हैं। नीचे एक प्रोग्राम है जो एक प्रारूप स्ट्रिंग attack.int वल्नरेबल _ प्रिंट (चार * दुर्भावनापूर्ण _ इनपुट) {प्रिंटएफ (दुर्भावनापूर्ण _ इनपुट);} के लिए असुरक्षित है, प्रोग्राम को पारित एक दुर्भावनापूर्ण तर्क "% s% s% s% s% s% s% s% s" हो सकता है, जो अनुचित मेमोरी रीड्स से प्रोग्राम को क्रैश कर सकता है। पूर्णांक-अतिप्रवाह रोकथाम पूर्णांक अतिप्रवाह तब होता है जब एक अंकगणितीय संचालन के परिणामस्वरूप एक पूर्णांक उपलब्ध स्थान के भीतर प्रतिनिधित्व करने के लिए बहुत बड़ा होता है। एक प्रोग्राम जो पूर्णांक अतिप्रवाह की ठीक से जांच नहीं करता है, संभावित सॉफ्टवेयर बग और कारनामों का परिचय देता है। नीचे C + + में एक फ़ंक्शन है जो यह पुष्टि करने का प्रयास करता है कि x और y का योग एक परिभाषित मूल्य MAX से कम या बराबर हैः bool sumIsValid _ floed (अहस्ताक्षरित पूर्णांक x, अहस्ताक्षरित पूर्णांक y) {अहस्ताक्षरित पूर्णांक राशि = x + y; वापसी राशि <= MAX;} कोड के साथ समस्या यह है कि यह जोड़ ऑपरेशन पर पूर्णांक अतिप्रवाह की जांच नहीं करता है। यदि x और y का योग एक अहस्ताक्षरित पूर्णांक के अधिकतम संभव मूल्य से अधिक है, तो जोड़ ऑपरेशन अतिप्रवाह होगा और शायद MAX से कम या उसके बराबर मूल्य में परिणाम देगा, भले ही x और y का योग MAX से अधिक हो। नीचे एक फलन है जो यह पुष्टि करके अतिप्रवाह की जाँच करता है कि योग x और y दोनों से अधिक या बराबर है। यदि योग अतिप्रवाह होता है, तो योग x से कम या y से कम होगा। बूल समइस्वालिड _ सिक्योर (अहस्ताक्षरित इंट x, अहस्ताक्षरित इंट y) {अहस्ताक्षरित इंट सम = x + y; रिटर्न सम> = x & & योग> = y & & & योग <= MAX;} पथ पारगमन रोकथाम पथ पारगमन एक भेद्यता है जिसके द्वारा एक अविश्वसनीय स्रोत से प्रदान किए गए पथ की व्याख्या इस तरह से की जाती है कि अनधिकृत फ़ाइल पहुँच संभव है। उदाहरण के लिए, एक स्क्रिप्ट पर विचार करें जो एक फ़ाइल नाम लेकर एक लेख लाती है, जिसे फिर स्क्रिप्ट द्वारा पढ़ा जाता है और पार्स किया जाता है। इस तरह की स्क्रिप्ट कुत्ते के भोजन के बारे में एक लेख को पुनः प्राप्त करने के लिए निम्नलिखित काल्पनिक यूआरएल का उपयोग कर सकती हैः https://www.example.net/cgi-bin/article.sh?name=dogfood.html यदि स्क्रिप्ट में कोई इनपुट जाँच नहीं है, इसके बजाय यह विश्वास करते हुए कि फ़ाइल नाम हमेशा मान्य है, एक दुर्भावनापूर्ण उपयोगकर्ता वेब सर्वर से कॉन्फ़िगरेशन फ़ाइलों को पुनः प्राप्त करने के लिए एक यूआरएल बना सकता हैः https://www.example.net/cgi-bin/article.sh?name=./././././etc/passwd स्क्रिप्ट के आधार पर, यह/वगैरह/पासडब्ल्यूडी फ़ाइल को उजागर कर सकता है, जिसमें यूनिक्स जैसी प्रणालियों पर (दूसरों के बीच) उपयोगकर्ता आईडी, उनके लॉगिन नाम, घर निर्देशिका पथ और गोले शामिल हैं। (इसी तरह के हमले के लिए एसक्यूएल इंजेक्शन देखें।) यह भी देखें अनुप्रयोग सुरक्षा रक्षात्मक प्रोग्रामिंग सुरक्षा बग डिफ़ॉल्ट रूप से सुरक्षित टिप्पणियाँ संदर्भ कंप्यूटर सुरक्षा