सॉफ्टवेयर विकास सुरक्षा

सॉफ्टवेयर विकास सुरक्षा प्रक्रिया लोगों और प्रथाओं को सम्मलित करने वाली एक सतत प्रक्रिया होती है, और आवेदन की गोपनीयता, अखंडता और उपलब्धता सुनिश्चित करती है। सुरक्षित सॉफ्टवेयर सुरक्षा जागरूक सॉफ्टवेयर विकास प्रक्रियाओं का परिणाम है जहाँ सुरक्षा अंतर्निहित होती है और इस प्रकार सॉफ्टवेयर को सुरक्षा को ध्यान में रखकर विकसित किया गया है।

प्रणाली विकास जीवन चक्र (एसडीएलसी) के हर चरण में नियोजित और प्रबंधित होने पर सुरक्षा सबसे प्रभावी होती है, विशेष रूप से महत्वपूर्ण अनुप्रयोगों में या जो संवेदनशील जानकारी को संसाधित करते है।

सॉफ्टवेयर विकास सुरक्षा का समाधान केवल तकनीक से कहीं अधिक होता है।

सॉफ्टवेयर विकास की चुनौतियाँ
जैसे-जैसे प्रौद्योगिकी उन्नत होती है, अनुप्रयोग वातावरण अधिक जटिल हो जाता है और अनुप्रयोग विकास सुरक्षा अधिक चुनौतीपूर्ण होती जाती है। एप्लिकेशन, प्रणाली और नेटवर्क लगातार विभिन्न सुरक्षा हमलों जैसे कि दुर्भावनापूर्ण कोड या सेवा से वंचित होते है। अनुप्रयोग विकास सुरक्षा के दृष्टिकोण से कुछ चुनौतियों में वायरस, ट्रोजन हॉर्स, लॉजिक बम, वर्म्स, एजेंट और एप्लेट्स सम्मलित होते है।

एप्लिकेशन में सुरक्षा भेद्यताएं हो सकती है जो सॉफ्टवेयर अभियांत्रिको द्वारा जानबूझकर या लापरवाही से उत्पन्न की जा सकती है।

सॉफ्टवेयर, पर्यावरण और हार्डवेयर सूचना प्रौद्योगिकी नियंत्रणों की आवश्यकता होती है, चूंकि वे खराब प्रोग्रामिंग अभ्यास से उत्पन्न समस्याओं को नहीं रोक सकते है। उपयोगकर्ताओं के इनपुट को सत्यापित करने के लिए सीमा और अनुक्रम जांच का उपयोग करने से डेटा की गुणवत्ता में सुधार होता है। भले ही प्रोग्रामर सर्वोत्तम प्रथाओं का पालन कर सकते है, फिर भी अप्रत्याशित परिस्थितियों के कारण एक एप्लिकेशन विफल हो सकता है और इसलिए ऑडिटिंग की तैयारी में सभी सूचनाओं को पहले लॉगिंग करके अप्रत्याशित विफलताओं को सफलतापूर्वक संभालना चाहिए। जैसे-जैसे सुरक्षा बढ़ती है, वैसे-वैसे सापेक्ष लागत और प्रशासनिक उपरि भी बढ़ती है।

एप्लिकेशन सामान्यतः उच्च-स्तरीय प्रोग्रामिंग भाषाओ का उपयोग करके विकसित किए जाते है जो स्वयं में सुरक्षा प्रभाव डाल सकते है। सुरक्षित अनुप्रयोगों और प्रणालियों का उत्पादन करने के लिए सॉफ्टवेयर विकास प्रक्रिया के लिए आवश्यक मुख्य गतिविधियों में सम्मलित है: वैचारिक परिभाषा, कार्यात्मक आवश्यकताएं, नियंत्रण विनिर्देश, डिज़ाइन समीक्षा, कोड समीक्षा और वॉक-थ्रू, प्रणाली परीक्षण समीक्षा और रखरखाव और परिवर्तन प्रबंधन।

सुरक्षित सॉफ्टवेयर बनाना न केवल एक सॉफ्टवेयर अभियांत्रिकी की ज़िम्मेदारी होती है, हितधारकों की भी जिम्मेदारी होती है जिसमें सम्मलित है: प्रबंधन, परियोजना प्रबंधक, व्यवसाय विश्लेषक, गुणवत्ता आश्वासन प्रबंधक, तकनीकी आर्किटेक्ट, सुरक्षा विशेषज्ञ, एप्लिकेशन और विकासक।

मूल सिद्धांत
सॉफ्टवेयर सुरक्षा के लिए कई बुनियादी मार्गदर्शक सिद्धांत होते है। इनके बारे में हितधारकों का ज्ञान और उन्हें सॉफ्टवेयर में कैसे लागू किया जाता है, यह सॉफ्टवेयर सुरक्षा के लिए महत्वपूर्ण होता है। इसमे सम्मलित है:
 * प्रकटीकरण से सुरक्षा
 * परिवर्तन से सुरक्षा
 * विनाश से रक्षा
 * निवेदन कौन कर रहा है
 * अनुरोधकर्ता के पास क्या अधिकार और विशेषाधिकार है
 * ऐतिहासिक साक्ष्य बनाने की क्षमता
 * विन्यास, सत्र और त्रुटियों/अपवादों का प्रबंधन

बुनियादी प्रथाएं
निम्नलिखित कुछ अनुशंसित वेब सुरक्षा प्रथाओं को सूचीबद्ध करता है जो सॉफ्टवेयर विकास के लिए अधिक विशिष्ट होता है।
 * ग्राहक साइड और सर्वर साइड पर इनपुट्स को स्वच्छ करता है
 * एनकोड अनुरोध / प्रतिक्रिया
 * डोमेन प्रविष्टियों के लिए एचटीटीपी का उपयोग करता है
 * केवल वर्तमान एन्क्रिप्शन और हैशिंग एल्गोरिदम का उपयोग करता है
 * निर्देशिका लिस्टिंग की अनुमति नहीं देता है
 * संवेदनशील डेटा को कुकीज़ के अंदर स्टोर नहीं करता है
 * सत्र की यादृच्छिकता की जाँच करता है
 * कुकीज़ में सुरक्षित और केवल एचटीटीपी फ़्लैग सेट करता है
 * टीएलएस का प्रयोग करता है एसएसएल का प्रयोग नहीं करता है
 * मजबूत पासवर्ड नीति सेट करता है
 * प्रपत्र के छिपे हुए छेत्र में संवेदनशील जानकारी संग्रहीत नहीं करता है
 * फाइल अपलोड कार्यक्षमता सत्यापित करता है
 * सुरक्षित प्रतिक्रिया शीर्षलेख सेट करता है
 * सुनिश्चित करता है कि तृतीय पक्ष पुस्तकालय सुरक्षित है
 * वेब सर्वर जानकारी छुपाता है

सुरक्षा परीक्षण
सुरक्षा परीक्षण की सामान्य विशेषताओं में प्रमाणीकरण, प्राधिकरण, गोपनीयता, उपलब्धता, अखंडता, गैर-अस्वीकृति और लचीलापन सम्मलित होते है। सुरक्षा परीक्षण यह सुनिश्चित करने के लिए आवश्यक होता है कि प्रणाली अनधिकृत उपयोगकर्ताओं को अपने संसाधनों और डेटा तक पहुंचने से रोकता है। कुछ एप्लिकेशन डेटा इंटरनेट पर भेजे जाते है जो सर्वर और नेटवर्क उपकरणों की एक श्रृंखला के माध्यम से यात्रा करते है। यह हैकर्स को पर्याप्त अवसर देता है।

सारांश
सभी सुरक्षित प्रणालियाँ सॉफ्टवेयर, कंप्यूटर हार्डवेयर, सूचना प्रणाली और नेटवर्क सुरक्षा के भीतर सुरक्षा नियंत्रण लागू करती है - प्रत्येक घटक या प्रक्रिया में संगठन के सबसे मूल्यवान संसाधन जो कि इसका डेटा होता है, सुरक्षा के लिए अलगाव की एक परत होती है। विभिन्न सुरक्षा नियंत्रण होती है जिन्हें सुरक्षा सुनिश्चित करने और अनधिकृत पहुंच को रोकने के लिए एप्लिकेशन की विकास प्रक्रिया में सम्मलित किया जाता है।

संदर्भ

 * Stewart, James (2012). CISSP Certified Information Systems Security Professional Study Guide Sixth Edition. Canada: John Wiley & Sons, Inc. pp. 275–319. ISBN 978-1-118-31417-3.
 * Report from Dagstuhl Seminar 12401Web Application Security Edited by Lieven Desmet, Martin Johns, Benjamin Livshits, and Andrei Sabelfeld, http://research.microsoft.com/en-us/um/people/livshits/papers%5Ctr%5Cdagrep_s12401.pdf
 * Web Application Security Consortium, The 80/20 Rule for Web Application Security by Jeremiah Grossman 2005, http://www.webappsec.org/projects/articles/013105.shtml
 * Wikipedia Web Application Security page, Web application security
 * Web Security Wiki page, एचटीटीपी://www.w3.org/Security/wiki/Main_Page
 * Wikipedia Web Security Exploits page, Category:Web security exploits
 * Open Web Application Security Project (OWASP), एचटीटीपी://www.owasp.org/index.php/Main_Page
 * Wikipedia Network Security page, Network security
 * Open Web Application Security Project (OWASP) web site, एचटीटीपी://www.owasp.org/images/8/83/Securing_Enterprise_Web_Applications_at_the_Source.pdf