एक प्रोग्रामर या डेवलपर के रूप में, सुरक्षित एप्लिकेशन बनाने के महत्व को कम करके नहीं आंका जा सकता है।
सॉफ़्टवेयर सुरक्षा सॉफ़्टवेयर में संभावित कमजोरियों की पहचान करके और उनसे बचाव के लिए आवश्यक सावधानी बरतते हुए दुर्भावनापूर्ण हमलों के प्रबंधन से संबंधित है।
सॉफ़्टवेयर कभी भी 100% सुरक्षित नहीं हो सकता क्योंकि एक डेवलपर बग को अनदेखा कर सकता है, मौजूदा मामलों को ठीक करने के प्रयास में नए बग बना सकता है, या अपडेट के माध्यम से नई कमजोरियां बना सकता है।
हालाँकि, दो प्रमुख प्रथाएँ हैं जो सभी सॉफ़्टवेयर डेवलपर यह सुनिश्चित करने के लिए नियोजित कर सकते हैं कि वे पहली बार में सुरक्षित सॉफ़्टवेयर राइटिंग सुरक्षित कोड बनाते हैं, और आपके कोड का कुशलता से परीक्षण करते हैं।
सुरक्षित कोड कैसे लिखें
सुरक्षित कोड लिखना एक बात के लिए नीचे आता हैत्रुटि से निपटने। यदि आप प्रत्येक संभावित मूल्य का अनुमान लगा सकते हैं जो उपयोगकर्ता आपके आवेदन को खिला सकता है और उस मूल्य के लिए आपके कार्यक्रम में प्रतिक्रिया बना सकता है, तो आप सुरक्षित कोड लिख रहे हैं।
यह आपके विचार से कहीं अधिक सरल है क्योंकि सभी अच्छे डेवलपर्स अपने द्वारा विकसित अनुप्रयोगों के बारे में लगभग सब कुछ जानते हैं। इसलिए, आपको हर उस मूल्य को जानना चाहिए जो आपके आवेदन को एक कार्य (स्वीकृत मूल्य) को पूरा करने के लिए आवश्यक है और यह समझना चाहिए कि अस्तित्व में हर संभव मूल्य एक अस्वीकृत मूल्य है।
सुरक्षित कोड लिखना
मान लीजिए कि आप एक ऐसा प्रोग्राम बनाना चाहते हैं जो एक उपयोगकर्ता से केवल दो पूर्णांक मान स्वीकार करता है और उन पर एक अतिरिक्त ऑपरेशन करता है। उस एक वाक्य के साथ, एक अच्छे डेवलपर की तरह, अब आप अपने आवेदन के बारे में सब कुछ जानते हैं। आप उन सभी मूल्यों को जानते हैं जिन्हें यह प्रोग्राम स्वीकार करेगा (पूर्णांक मान) और आप उस कार्य को जानते हैं जिसे यह प्रोग्राम पूरा करेगा (एक अतिरिक्त ऑपरेशन)।
जावा उदाहरण में प्रोग्राम बनाना
आयात java.util. चित्रान्वीक्षक;
सार्वजनिक वर्ग मुख्य {
// मुख्य कार्य जो प्रोग्राम को निष्पादित करता है और दो मान एकत्र करता है
सार्वजनिक स्थैतिक शून्य main (String [] args) {
System.out.println ("कृपया अपने दो पूर्णांक मान दर्ज करें:");
इंट वैल्यू1;
इंट वैल्यू २;
स्कैनर इनपुट = नया स्कैनर (System.in);
value1 = input.nextInt ();
value2 = input.nextInt ();
जोड़ (मान 1, मान 2);
इनपुट.क्लोज़ ();
}
// वह फ़ंक्शन जो दो मानों को एकत्र करता है और उनका योग प्रदर्शित करता है
निजी स्थैतिक शून्य जोड़ (int value1, int value2) {
अंतर राशि;
योग = मान १ + मान २;
System.out.println ("आपके द्वारा दर्ज किए गए दो पूर्णांक मानों का योग:" + योग);
}
}
उपरोक्त कोड एक ऐसा एप्लिकेशन तैयार करता है जो आवश्यकताओं से सटीक रूप से मेल खाता है। निष्पादन पर, यह कंसोल में निम्न पंक्ति का उत्पादन करेगा:
कृपया अपने दो पूर्णांक मान दर्ज करें:
एप्लिकेशन तब तक रुका रहेगा जब तक कि उपयोगकर्ता कंसोल में दो पूर्णांक मान दर्ज नहीं करता है (अर्थात पहला मान टाइप करना, एंटर कुंजी मारना और दोहराना)।
यदि उपयोगकर्ता मानों में प्रवेश करता है 5 तथा 4 कंसोल में, प्रोग्राम निम्न आउटपुट का उत्पादन करेगा:
आपके द्वारा दर्ज किए गए दो पूर्णांक मानों का योग: 9
यह भी खूब रही; कार्यक्रम ठीक वही करता है जो उसे करना चाहिए। हालाँकि, यदि कोई नापाक उपयोगकर्ता साथ आता है और आपके आवेदन में एक गैर-पूर्णांक मान, जैसे "g" दर्ज करता है, तो समस्याएँ होंगी। ऐसा इसलिए है क्योंकि एप्लिकेशन में कोई भी कोड अस्वीकृत मानों से सुरक्षा नहीं करता है।
इस बिंदु पर आपका एप्लिकेशन क्रैश हो जाएगा, हैकर के लिए आपके एप्लिकेशन में एक संभावित गेटवे बना रहा है जो जानता है कि आगे क्या करना है।
अपने कार्यक्रम का उदाहरण सुरक्षित करना
आयात java.util. इनपुट मिसमैच अपवाद;
आयात java.util. चित्रान्वीक्षक;
सार्वजनिक वर्ग मुख्य {
// मुख्य कार्य जो प्रोग्राम को निष्पादित करता है और दो मान एकत्र करता है
सार्वजनिक स्थैतिक शून्य main (String [] args) {
प्रयत्न {
System.out.println ("कृपया अपने दो पूर्णांक मान दर्ज करें:");
इंट वैल्यू1;
इंट वैल्यू २;
// उपयोगकर्ता से प्रत्येक इनपुट को पढ़ने के लिए स्कैनर वर्ग का उपयोग करना,
// और इसे संबंधित चर पर असाइन करें (यदि मान पूर्णांक नहीं हैं तो अपवाद फेंकता है)
स्कैनर इनपुट = नया स्कैनर (System.in);
value1 = input.nextInt ();
value2 = input.nextInt ();
// अतिरिक्त फ़ंक्शन को कॉल करें और दो मानों को पास करें
जोड़ (मान 1, मान 2);
// इसके उपयोग के अंत में आने के बाद इनपुट स्ट्रीम को बंद कर देता है
इनपुट.क्लोज़ ();
// कोशिश ब्लॉक में फेंकी गई सभी त्रुटियों को संभालें
}कैच (इनपुट मिस्मैच एक्सेप्शन ई){
System.out.println ("कृपया एक मान्य पूर्णांक मान दर्ज करें।");
}कैच (अपवाद ई) {
System.out.println (e.getMessage ());
}
}
// वह फ़ंक्शन जो दो मानों को एकत्र करता है और उनका योग प्रदर्शित करता है
निजी स्थैतिक शून्य जोड़ (int value1, int value2) {
अंतर राशि;
योग = मान १ + मान २;
System.out.println ("आपके द्वारा दर्ज किए गए दो पूर्णांक मानों का योग:" + योग);
}
}
उपरोक्त कोड सुरक्षित है क्योंकि यह अपवाद हैंडलिंग करता है। इसलिए, यदि आप एक गैर-पूर्णांक मान दर्ज करते हैं, तो कोड की निम्न पंक्ति का निर्माण करते समय प्रोग्राम सही ढंग से समाप्त हो जाएगा:
कृपया एक मान्य पूर्णांक मान दर्ज करें।
अपवाद हैंडलिंग क्या है?
अनिवार्य रूप से, अपवाद प्रबंधन त्रुटि प्रबंधन का आधुनिक संस्करण है, जहां आप त्रुटि प्रबंधन कोड को सामान्य प्रसंस्करण कोड से अलग करते हैं। उपरोक्त उदाहरण में, सभी सामान्य प्रसंस्करण कोड (या कोड जो संभावित रूप से एक अपवाद फेंक सकते हैं) a within के भीतर है प्रयत्न ब्लॉक, और सभी त्रुटि प्रबंधन कोड भीतर है पकड़ ब्लॉक।
यदि आप ऊपर दिए गए उदाहरण पर करीब से नज़र डालते हैं, तो आप पाएंगे कि दो कैच ब्लॉक हैं। पहला एक लेता है इनपुट बेमेल अपवाद बहस; यह उस अपवाद का नाम है जिसे गैर-पूर्णांक मान दर्ज करने पर फेंक दिया जाता है। दूसरा एक लेता है अपवाद तर्क, और यह महत्वपूर्ण है क्योंकि इसका उद्देश्य कोड के भीतर किसी भी अपवाद को पकड़ना है जो डेवलपर को परीक्षण के दौरान नहीं मिला।
सम्बंधित: जावा अपवाद: क्या आप उन्हें सही तरीके से संभाल रहे हैं?
अपने कोड का परीक्षण
आपको पैकेजिंग से पहले अपने कोड के परीक्षण और पुन: परीक्षण की शक्ति को कभी कम नहीं समझना चाहिए। कई डेवलपर्स (और उनके एप्लिकेशन के उपयोगकर्ता) सॉफ़्टवेयर के जनता के लिए उपलब्ध होने के बाद नए बग ढूंढते हैं।
अपने कोड का पूरी तरह से परीक्षण करने से यह सुनिश्चित होगा कि आप जानते हैं कि आपका एप्लिकेशन हर कल्पनीय परिदृश्य के तहत क्या करेगा, और इससे आप अपने एप्लिकेशन को डेटा उल्लंघनों से बचा सकते हैं।
सम्बंधित: अपना पहला सॉफ्टवेयर टेस्टिंग जॉब कैसे लैंड करें
ऊपर दिए गए उदाहरण पर विचार करें। क्या होगा यदि, पूरा होने के बाद, आप केवल पूर्णांक मानों वाले एप्लिकेशन का परीक्षण करते हैं? आप यह सोचकर आवेदन से दूर जा सकते हैं कि आपने सभी संभावित त्रुटियों की सफलतापूर्वक पहचान कर ली है जब ऐसा नहीं है।
तथ्य यह है कि आप सभी संभावित त्रुटियों की पहचान करने में सक्षम नहीं हो सकते हैं; यही कारण है कि त्रुटि प्रबंधन आपके कोड के परीक्षण के साथ हाथ से काम करता है। उपरोक्त कार्यक्रम के परीक्षण से पता चलता है कि एक विशिष्ट परिदृश्य में एक संभावित त्रुटि होगी।
हालाँकि, यदि कोई अन्य त्रुटि जो परीक्षण के दौरान दिखाई नहीं देती है, तो ऊपर दिए गए कोड में दूसरा कैच ब्लॉक इसे संभाल लेगा।
अपने डेटाबेस को सुरक्षित करना
यदि आपका एप्लिकेशन किसी डेटाबेस से कनेक्ट होता है, तो उस डेटाबेस तक पहुंच को रोकने का सबसे अच्छा तरीका यह सुनिश्चित करना है कि आपके एप्लिकेशन के सभी पहलू सुरक्षित हैं। हालाँकि, क्या होगा यदि आपका एप्लिकेशन उक्त डेटाबेस को एक इंटरफ़ेस प्रदान करने के एकमात्र उद्देश्य से डिज़ाइन किया गया है?
यहीं से चीजें थोड़ी और दिलचस्प हो जाती हैं। अपने सबसे बुनियादी रूप में, एक डेटाबेस उपयोगकर्ता को डेटा जोड़ने, पुनर्प्राप्त करने, अपडेट करने और हटाने की अनुमति देता है। एक डेटाबेस प्रबंधन प्रणाली एक ऐसा एप्लिकेशन है जो उपयोगकर्ता को सीधे डेटाबेस से बातचीत करने की अनुमति देता है।
अधिकांश डेटाबेस में संवेदनशील डेटा होता है, इसलिए, इस डेटा की अखंडता को बनाए रखने और उस तक पहुंच को सीमित करने के लिए एक आवश्यकता पहुंच नियंत्रण है।
पहुँच नियंत्रण
एक्सेस कंट्रोल उन लोगों के प्रकार को परिभाषित करके डेटाबेस की अखंडता को बनाए रखने का प्रयास करता है जो डेटाबेस तक पहुंच सकते हैं और उनके पास पहुंच के प्रकार को प्रतिबंधित कर सकते हैं। इसलिए, एक अच्छा डेटाबेस प्रबंधन सिस्टम लॉग इन करने में सक्षम होना चाहिए कि कौन डेटाबेस तक पहुंचता है, किस समय, और उन्होंने क्या किया।
यह एक पंजीकृत उपयोगकर्ता को उस डेटा तक पहुँचने या संपादित करने से रोकने में भी सक्षम होना चाहिए जिसके साथ वे बातचीत करने के लिए अधिकृत नहीं हैं।
सॉफ्टवेयर सुरक्षा सभी डेवलपर्स के लिए एक महत्वपूर्ण कौशल है
अच्छा सॉफ़्टवेयर विकसित करना यह सुनिश्चित करने का पर्याय है कि आपका सॉफ़्टवेयर किसी भी दुर्भावनापूर्ण हमले का सामना कर सकता है। यह केवल सुरक्षित कोड लिखने, किसी एप्लिकेशन के निरंतर परीक्षण और आपके डेटा तक किसके पास पहुंच है, इस पर नियंत्रण बनाए रखने के माध्यम से प्राप्त किया जा सकता है।
अब जब आप अपने सॉफ़्टवेयर को सुरक्षित करना जानते हैं, तो आप कुछ सॉफ़्टवेयर विकास चरणों के बारे में जानना चाहेंगे।
अपना पहला प्रोग्राम कोड करने की तैयारी कर रहे हैं? इन प्रमुख सॉफ़्टवेयर विकास चरणों का पालन करना सुनिश्चित करें।
आगे पढ़िए
- प्रोग्रामिंग
- साइबर सुरक्षा
- कोडिंग टिप्स
कदीशा कीन एक पूर्ण-स्टैक सॉफ़्टवेयर डेवलपर और तकनीकी/प्रौद्योगिकी लेखक हैं। उसके पास कुछ सबसे जटिल तकनीकी अवधारणाओं को सरल बनाने की विशिष्ट क्षमता है; उत्पादन सामग्री जिसे किसी भी तकनीकी नौसिखिए द्वारा आसानी से समझा जा सकता है। उसे लिखने, दिलचस्प सॉफ्टवेयर विकसित करने और दुनिया की यात्रा (वृत्तचित्रों के माध्यम से) करने का शौक है।
हमारे न्यूज़लेटर की सदस्यता
तकनीकी युक्तियों, समीक्षाओं, निःशुल्क ई-पुस्तकों और अनन्य सौदों के लिए हमारे न्यूज़लेटर से जुड़ें!
एक और क़दम…!
कृपया अपने ईमेल पते की पुष्टि उस ईमेल में करें जो हमने अभी आपको भेजी है।