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

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

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

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

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

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

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

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

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

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

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

संदर्भ

 * 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, https://www.w3.org/Security/wiki/Main_Page
 * Wikipedia Web Security Exploits page, Category:Web security exploits
 * Open Web Application Security Project (OWASP), https://www.owasp.org/index.php/Main_Page
 * Wikipedia Network Security page, Network security
 * Open Web Application Security Project (OWASP) web site, https://www.owasp.org/images/8/83/Securing_Enterprise_Web_Applications_at_the_Source.pdf