जावा अनुप्रयोग सुरक्षा: शीर्ष 10 कमजोरियाँ और उनसे कैसे बचें

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

परिचय: जावा अनुप्रयोगों की सुरक्षा क्यों महत्वपूर्ण है?

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



1. SQL इंजेक्शन (SQL Injection)

समस्या: SQL क्वेरी में असत्यापित उपयोगकर्ता डेटा का स्थानांतरण।

असुरक्षित कोड का उदाहरण:

String query = "SELECT * FROM users WHERE username = '" + userInput + "'";Statement stmt = connection.createStatement();ResultSet rs = stmt.executeQuery(query);

समाधान: पैरामीटरयुक्त क्वेरी (PreparedStatement) का उपयोग करें।

String query = "SELECT * FROM users WHERE username = ?";PreparedStatement pstmt = connection.prepareStatement(query);pstmt.setString(1, userInput);ResultSet rs = pstmt.executeQuery();


2. क्रॉस-साइट स्क्रिप्टिंग (XSS)

समस्या: उपयोगकर्ता इनपुट के माध्यम से वेब पेज में दुर्भावनापूर्ण स्क्रिप्ट का इंजेक्शन।

कमजोरी का उदाहरण:

String comment = request.getParameter("comment");out.println("<div>" + comment + "</div>");

समाधान: HTML वर्णों को एस्केप करें। OWASP Java Encoder जैसी लाइब्रेरी का उपयोग करें।

import org.owasp.encoder.Encode;String comment = request.getParameter("comment");out.println("<div>" + Encode.forHtml(comment) + "</div>");


3. असुरक्षित डिसीरियलाइज़ेशन

समस्या: हमलावर एक सीरियलाइज़्ड ऑब्जेक्ट भेज सकता है, जो डिसीरियलाइज़ेशन पर मनमाना कोड निष्पादित करेगा।

उदाहरण:

ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());Object obj = ois.readObject(); // खतरनाक!

समाधान:

  • अविश्वसनीय स्रोतों से डेटा को डिसीरियलाइज़ न करें।
  • क्लासों की श्वेत सूची (look-ahead deserialization) का उपयोग करें।
  • सुरक्षा सेटिंग्स के साथ JSON (Jackson) का उपयोग करें।
ObjectMapper mapper = new ObjectMapper();mapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); // असुरक्षित!// सही: defaultTyping बंद करें और @JsonTypeInfo का उपयोग करें


4. क्रॉस-साइट रिक्वेस्ट फोर्जरी (CSRF)

समस्या: हमलावर उपयोगकर्ता को किसी विश्वसनीय साइट पर अवांछित कार्रवाई करने के लिए मजबूर करता है।

समाधान: CSRF टोकन का उपयोग करें। Spring Security में यह अंतर्निहित है:

<form action="/transfer" method="post">    <input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/>    <input type="text" name="amount"/>    <button type="submit">स्थानांतरित करें</button></form>


5. प्रमाणीकरण और सत्र प्रबंधन में कमियाँ

समस्याएँ: कमज़ोर पासवर्ड, असुरक्षित cookies, निश्चित सत्र।

सिफारिशें:

  • पासवर्ड हैशिंग के लिए bcrypt या Argon2 का उपयोग करें।
  • cookies के लिए HttpOnly और Secure फ़्लैग सेट करें।
  • N असफल लॉगिन प्रयासों के बाद लॉकआउट लागू करें।
PasswordEncoder encoder = new BCryptPasswordEncoder();String hashedPassword = encoder.encode(plainPassword);


6. असुरक्षित कॉन्फ़िगरेशन (Security Misconfiguration)

समस्या: सक्षम डीबग मोड, डिफ़ॉल्ट पासवर्ड, असुरक्षित endpoints।

समाधान:

ब्लॉग

पुस्तक अनुशंसाएँ