सॉफ्टवेयर विकास सुरक्षा
सॉफ्टवेयर विकास सुरक्षा प्रक्रिया लोगों और प्रथाओं को शामिल करने वाली एक सतत प्रक्रिया है, और आवेदन की गोपनीयता, अखंडता और उपलब्धता सुनिश्चित करती है। सुरक्षित सॉफ्टवेयर सुरक्षा जागरूक सॉफ्टवेयर विकास प्रक्रियाओं का परिणाम है जहाँ सुरक्षा अंतर्निहित है और इस प्रकार सॉफ्टवेयर को सुरक्षा को ध्यान में रखकर विकसित किया गया है।[1]
सिस्टम विकास जीवन चक्र (एसडीएलसी) के हर चरण में नियोजित और प्रबंधित होने पर सुरक्षा सबसे प्रभावी होती है, विशेष रूप से महत्वपूर्ण अनुप्रयोगों में या जो संवेदनशील जानकारी को संसाधित करते हैं।
सॉफ्टवेयर विकास सुरक्षा का समाधान केवल तकनीक से कहीं अधिक है।
सॉफ्टवेयर विकास की चुनौतियाँ
जैसे-जैसे प्रौद्योगिकी उन्नत होती है, अनुप्रयोग वातावरण अधिक जटिल होता जाता है और अनुप्रयोग विकास सुरक्षा अधिक चुनौतीपूर्ण होती जाती है। एप्लिकेशन, सिस्टम और नेटवर्क लगातार विभिन्न सुरक्षा हमलों जैसे कि दुर्भावनापूर्ण कोड या सेवा से वंचित हैं। अनुप्रयोग विकास सुरक्षा के दृष्टिकोण से कुछ चुनौतियों में वायरस, ट्रोजन हॉर्स, लॉजिक बम, वर्म्स, एजेंट और एप्लेट्स शामिल हैं।[2]
एप्लिकेशन में सुरक्षा भेद्यताएं हो सकती हैं जो सॉफ्टवेयर इंजीनियरों द्वारा जानबूझकर या लापरवाही से पेश की जा सकती हैं।
सॉफ्टवेयर, पर्यावरण और हार्डवेयर सूचना प्रौद्योगिकी नियंत्रणों की आवश्यकता होती है, हालांकि वे खराब प्रोग्रामिंग अभ्यास से उत्पन्न समस्याओं को नहीं रोक सकते। उपयोगकर्ताओं के इनपुट को सत्यापित करने के लिए सीमा और अनुक्रम जांच का उपयोग करने से डेटा की गुणवत्ता में सुधार होगा। भले ही प्रोग्रामर सर्वोत्तम प्रथाओं का पालन कर सकते हैं, फिर भी अप्रत्याशित परिस्थितियों के कारण एक एप्लिकेशन विफल हो सकता है और इसलिए ऑडिटिंग की तैयारी में इसे कैप्चर करने वाली सभी सूचनाओं को पहले लॉगिंग करके अप्रत्याशित विफलताओं को सफलतापूर्वक संभालना चाहिए। जैसे-जैसे सुरक्षा बढ़ती है, वैसे-वैसे सापेक्ष लागत और प्रशासनिक उपरि भी बढ़ती है।
एप्लिकेशन आमतौर पर उच्च-स्तरीय प्रोग्रामिंग भाषाओ का उपयोग करके विकसित किए जाते हैं जो स्वयं में सुरक्षा प्रभाव डाल सकते हैं। सुरक्षित अनुप्रयोगों और प्रणालियों का उत्पादन करने के लिए सॉफ्टवेयर विकास प्रक्रिया के लिए आवश्यक मुख्य गतिविधियों में शामिल हैं: वैचारिक परिभाषा, कार्यात्मक आवश्यकताएं, नियंत्रण विनिर्देश, डिज़ाइन समीक्षा, कोड समीक्षा और वॉक-थ्रू, सिस्टम परीक्षण समीक्षा और रखरखाव और परिवर्तन प्रबंधन।
सुरक्षित सॉफ्टवेयर बनाना न केवल एक सॉफ्टवेयर इंजीनियर की ज़िम्मेदारी है, बल्कि हितधारकों की भी ज़िम्मेदारी है जिसमें शामिल हैं: प्रबंधन, परियोजना प्रबंधक, व्यवसाय विश्लेषक, गुणवत्ता आश्वासन प्रबंधक, तकनीकी आर्किटेक्ट, सुरक्षा विशेषज्ञ, एप्लिकेशन स्वामी और डेवलपर।
मूल सिद्धांत
सॉफ्टवेयर सुरक्षा के लिए कई बुनियादी मार्गदर्शक सिद्धांत हैं। इनके बारे में हितधारकों का ज्ञान और उन्हें सॉफ्टवेयर में कैसे लागू किया जा सकता है, यह सॉफ्टवेयर सुरक्षा के लिए महत्वपूर्ण है। इसमे शामिल है:
- प्रकटीकरण से सुरक्षा
- परिवर्तन से सुरक्षा
- विनाश से रक्षा
- निवेदन कौन कर रहा है
- अनुरोधकर्ता के पास क्या अधिकार और विशेषाधिकार हैं
- ऐतिहासिक साक्ष्य बनाने की क्षमता
- कॉन्फ़िगरेशन, सत्र और त्रुटियों/अपवादों का प्रबंधन
बुनियादी प्रथाएं
निम्नलिखित कुछ अनुशंसित वेब सुरक्षा प्रथाओं को सूचीबद्ध करता है जो सॉफ्टवेयर डेवलपर्स के लिए अधिक विशिष्ट हैं।
- क्लाइंट साइड और सर्वर साइड पर इनपुट्स को सैनिटाइज करें
- एनकोड अनुरोध / प्रतिक्रिया
- डोमेन प्रविष्टियों के लिए एचटीटीपी का उपयोग करें
- केवल वर्तमान एन्क्रिप्शन और हैशिंग एल्गोरिदम का उपयोग करें
- निर्देशिका लिस्टिंग की अनुमति न दें
- संवेदनशील डेटा को कुकीज़ के अंदर स्टोर न करें
- सत्र की यादृच्छिकता की जाँच करें
- कुकीज़ में सुरक्षित और केवल एचटीटीपी फ़्लैग सेट करें
- टीएलएस का प्रयोग करें एसएसएल नहीं
- मजबूत पासवर्ड नीति सेट करें
- प्रपत्र के छिपे हुए फ़ील्ड में संवेदनशील जानकारी संग्रहीत न करें
- फ़ाइल अपलोड कार्यक्षमता सत्यापित करें
- सुरक्षित प्रतिक्रिया शीर्षलेख सेट करें
- सुनिश्चित करें कि तृतीय पक्ष पुस्तकालय सुरक्षित हैं
- वेब सर्वर जानकारी छुपाएं
सुरक्षा परीक्षण
सुरक्षा परीक्षण की सामान्य विशेषताओं में प्रमाणीकरण, प्राधिकरण, गोपनीयता, उपलब्धता, अखंडता, गैर-अस्वीकृति और लचीलापन शामिल हैं। सुरक्षा परीक्षण यह सुनिश्चित करने के लिए आवश्यक है कि सिस्टम अनधिकृत उपयोगकर्ताओं को अपने संसाधनों और डेटा तक पहुंचने से रोकता है। कुछ एप्लिकेशन डेटा इंटरनेट पर भेजे जाते हैं जो सर्वर और नेटवर्क उपकरणों की एक श्रृंखला के माध्यम से यात्रा करते हैं। यह बेईमान हैकर्स को पर्याप्त अवसर देता है।
सारांश
सभी सुरक्षित प्रणालियाँ सॉफ्टवेयर, कंप्यूटर हार्डवेयर, सूचना प्रणाली और नेटवर्क सुरक्षा के भीतर सुरक्षा नियंत्रण लागू करती हैं - प्रत्येक घटक या प्रक्रिया में संगठन के सबसे मूल्यवान संसाधन जो कि इसका डेटा है, की सुरक्षा के लिए अलगाव की एक परत होती है। विभिन्न सुरक्षा नियंत्रण हैं जिन्हें सुरक्षा सुनिश्चित करने और अनधिकृत पहुंच को रोकने के लिए एप्लिकेशन की विकास प्रक्रिया में शामिल किया जा सकता है।
संदर्भ
- ↑ Securing Enterprise Web Applications at the Source: An Application Security Perspective, OWASP
- ↑ Stewart, James (2012). सीआईएसएसपी प्रमाणित सूचना प्रणाली सुरक्षा पेशेवर अध्ययन गाइड छठा संस्करण. Canada: John Wiley & Sons, Inc. pp. 275–319. ISBN 978-1-118-31417-3.
- 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