
Apache Struts CVE-2017-9805 के लिए शोषण, REST प्लगइन में एक दूरस्थ कोड निष्पादन कमजोरी। यह Struts-आधारित Java वेब अनुप्रयोगों के प्रवेश परीक्षण और सुरक्षा मूल्यांकन को सक्षम करता है।
अपाचे स्ट्रट्स वेब फ्रेमवर्क जावा वेब एप्लिकेशन बनाने के लिए एक मुफ्त ओपन-सोर्स समाधान है।
वेब एप्लिकेशन पारंपरिक वेबसाइटों से इस मायने में भिन्न होते हैं कि वेब एप्लिकेशन एक गतिशील प्रतिक्रिया उत्पन्न कर सकते हैं। कई वेबसाइटें केवल स्थिर पृष्ठ प्रदान करती हैं। एक वेब एप्लिकेशन डेटाबेस और बिजनेस लॉजिक इंजन के साथ बातचीत करके प्रतिक्रिया को अनुकूलित कर सकता है।
जावासर्वर पेजों पर आधारित वेब एप्लिकेशन कभी-कभी डेटाबेस कोड, पेज डिज़ाइन कोड और नियंत्रण प्रवाह कोड को मिला देते हैं। व्यवहार में, हम पाते हैं कि जब तक इन चिंताओं को अलग नहीं किया जाता, बड़े एप्लिकेशन को बनाए रखना मुश्किल हो जाता है।
सॉफ्टवेयर एप्लिकेशन में चिंताओं को अलग करने का एक तरीका मॉडल-व्यू-कंट्रोलर (MVC) आर्किटेक्चर का उपयोग करना है। मॉडल बिजनेस या डेटाबेस कोड का प्रतिनिधित्व करता है, व्यू पेज डिज़ाइन कोड का प्रतिनिधित्व करता है, और कंट्रोलर नेविगेशनल कोड का प्रतिनिधित्व करता है। स्ट्रट्स फ्रेमवर्क को डेवलपर्स को MVC आर्किटेक्चर का उपयोग करने वाले वेब एप्लिकेशन बनाने में मदद करने के लिए डिज़ाइन किया गया है।
फ्रेमवर्क तीन प्रमुख घटक प्रदान करता है:
एक “अनुरोध” हैंडलर जो एप्लिकेशन डेवलपर द्वारा प्रदान किया जाता है और एक मानक URI से मैप किया जाता है। एक “प्रतिक्रिया” हैंडलर जो नियंत्रण को किसी अन्य संसाधन पर स्थानांतरित करता है जो प्रतिक्रिया को पूरा करता है। एक टैग लाइब्रेरी जो डेवलपर्स को सर्वर पेजों के साथ इंटरैक्टिव फॉर्म-आधारित एप्लिकेशन बनाने में मदद करती है। फ्रेमवर्क का आर्किटेक्चर और टैग बज़वर्ड-अनुरूप हैं। स्ट्रट्स पारंपरिक REST एप्लिकेशन और SOAP तथा AJAX जैसी तकनीकों के साथ अच्छी तरह से काम करता है।
अपाचे स्ट्रट्स परियोजना वह ओपन सोर्स समुदाय है जो अपाचे स्ट्रट्स फ्रेमवर्क का निर्माण और रखरखाव करता है। परियोजना में विभिन्न प्रकार के स्वयंसेवक शामिल हैं जो सहयोगी, समुदाय-आधारित ओपन सोर्स विकास के संबंध में सामान्य मूल्य साझा करते हैं। अपाचे स्ट्रट्स परियोजना को अपने मूल संगठन: अपाचे सॉफ्टवेयर फाउंडेशन के साथ इन मूल्यों को साझा करने पर गर्व है।
परियोजना को “स्ट्रट्स” कहा जाता है क्योंकि फ्रेमवर्क का उद्देश्य “अदृश्य आधार” प्रदान करना है जो पेशेवर एप्लिकेशन विकास का समर्थन करता है। स्ट्रट्स वह गोंद प्रदान करता है जो मानक जावा प्लेटफॉर्म के विभिन्न तत्वों को एक सुसंगत संपूर्णता में जोड़ता है। हमारा लक्ष्य मौजूदा मानकों का लाभ उठाना है, उन लापता टुकड़ों का उत्पादन करना जिनकी हमें एंटरप्राइज़-ग्रेड एप्लिकेशन बनाने के लिए आवश्यकता है जो समय के साथ बनाए रखने में आसान हों।
अपाचे स्ट्रट्स परियोजना ने स्ट्रट्स फ्रेमवर्क के दो प्रमुख संस्करण पेश किए थे। वर्तमान में हम केवल स्ट्रट्स 2 संस्करण का रखरखाव कर रहे हैं। सभी स्ट्रट्स 1.x एप्लिकेशन को स्ट्रट्स 2 में अपग्रेड करने की अनुशंसा की जाती है। कृपया स्ट्रट्स 1.x का उपयोग करके नया एप्लिकेशन विकास शुरू न करें, क्योंकि हम अब सुरक्षा पैच जारी नहीं कर रहे हैं।
स्ट्रट्स 2 मूल रूप से वेबवर्क 2 के नाम से जाना जाता था। कई वर्षों तक स्वतंत्र रूप से काम करने के बाद, वेबवर्क और स्ट्रट्स समुदायों ने स्ट्रट्स 2 बनाने के लिए सेना में शामिल हो गए। 2.x फ्रेमवर्क उन टीमों के लिए सबसे अच्छा विकल्प है जो कठिन समस्याओं के लिए सुरुचिपूर्ण समाधान को महत्व देती हैं।
अपाचे स्ट्रट्स एक आधुनिक, रखरखाव योग्य और पूर्ण-विशेषताओं वाला वेब फ्रेमवर्क है। यह वर्षों से मौजूद है और विशाल उपयोगकर्ता आधार को देखते हुए, इसके निकट भविष्य में कभी भी गायब होने की संभावना नहीं है। इतना ही नहीं, हमारे पास परियोजना पर समर्पित उपयोगकर्ता और डेवलपर हैं। अपाचे स्ट्रट्स को अपाचे लाइसेंस 2.0 के तहत लाइसेंस प्राप्त है और यह नहीं बदलेगा। हम एक स्वच्छ आईपी बनाए रखते हैं और आप परियोजना का उपयोग करने के लिए “सुरक्षित” हैं। कभी-कभी आप किसी परियोजना का उपयोग करने के लिए “सुरक्षित” नहीं होते जब कोई कंपनी एससीएम को नियंत्रित करती है। स्रोत कोड तक पहुंच का मतलब यह नहीं है कि यह मुफ्त है। अपाचे स्ट्रट्स के साथ, आप न केवल “इसके साथ जो चाहें करने” के लिए स्वतंत्र हैं, बल्कि आप योगदान भी कर सकते हैं (जो हमेशा मामला नहीं होता)। और सबसे अच्छी बात: आप कोर टीम का हिस्सा भी बन सकते हैं।
आमतौर पर अपाचे स्ट्रट्स के साथ अन्य तकनीकों को एकीकृत करना बहुत आसान है। यदि आप अपाचे कैयेन, हाइबरनेट या जेडीबीसी जैसे ओआरएम का उपयोग कर रहे हैं, तो आपको कोई प्रतिबंध नहीं होगा। अपाचे स्ट्रट्स एक फ्रंटएंड तकनीक से भी बहुत अधिक बंधा नहीं है। पुराने दिनों में यह जेएसपी था, फिर वेलोसिटी और फ्रीमार्कर आए। आजकल आप अपना वेब एप्लिकेशन केवल स्थिर HTML और एंगुलरजेएस के साथ बना सकते हैं। या आप साइटमेश या टाइल्स का उपयोग करना चाहते हैं। स्ट्रट्स के सुरुचिपूर्ण और उपयोग में आसान विस्तार तंत्र के कारण यह सब कोई समस्या नहीं है।
अन्य, घटक-उन्मुख फ्रेमवर्क के विपरीत, हम वेब की स्टेटलेस प्रकृति को छिपाने का लक्ष्य नहीं रखते हैं। हमें लगता है कि अनुरोध/प्रतिक्रिया चक्र पर निर्माण करना पूरी तरह से स्वीकार्य है। हम यह भी मानते हैं कि एमवीसी पैटर्न इतना बुरा नहीं है, सिर्फ इसलिए कि यह पुराना है। वास्तव में, हमारा मानना है कि अपाचे स्ट्रट्स आर्किटेक्चर साफ और समझने में आसान है।
बेशक, यदि आप सर्वर साइड पर ऐसे घटक बनाना चाहते हैं जो फ्रंट एंड साइड पर रेंडर करते हैं, तो आप स्ट्रट्स के साथ गलत हैं। यह एक अलग दृष्टिकोण है जो आवश्यक HTML/JavaScript ज्ञान की मात्रा को कम करने और व्यू लेयर के लिए पुन: प्रयोज्य घटक बनाने का वादा करता है। विकेट और टेपेस्ट्री जैसी परियोजनाएं इस उद्देश्य को बहुत अच्छी तरह से पूरा करती हैं। प्रत्येक फ्रेमवर्क की तरह, आपको यह तय करना होगा कि क्या आपके लिए घटक बनाना समझ में आता है या क्या आप स्ट्रट्स-दृष्टिकोण के साथ बेहतर हैं।