जावा एप्लिकेशन सुरक्षा: व्यवहार में शीर्ष-10 कमजोरियाँ

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

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

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

जावा एप्लिकेशन सुरक्षा: व्यवहार में शीर्ष-10 कमजोरियाँ

\n\n

जावा एप्लिकेशन सुरक्षा केवल चेकलिस्ट में एक टिक नहीं है, बल्कि विकास का एक महत्वपूर्ण पहलू है। OWASP के अनुसार, 70% से अधिक आधुनिक वेब एप्लिकेशन में कम से कम एक गंभीर कमजोरी होती है। इस लेख में, हम वास्तविक कोड उदाहरणों और उन्हें दूर करने के तरीकों के साथ 10 सबसे सामान्य खतरों का विश्लेषण करेंगे। यह सामग्री शुरुआती और अनुभवी जावा डेवलपर्स दोनों के लिए उपयोगी होगी।

\n\n

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

\n

SQL इंजेक्शन कमजोरियों में अग्रणी बना हुआ है। हमलावर उपयोगकर्ता इनपुट के माध्यम से दुर्भावनापूर्ण SQL कोड इंजेक्ट कर सकता है।

\n\n

कमजोर कोड:

\n
String query = "SELECT * FROM users WHERE username = '" + username + "'";\nStatement stmt = connection.createStatement();\nResultSet rs = stmt.executeQuery(query);
\n\n

सुधारित कोड (PreparedStatement का उपयोग):

\n
String query = "SELECT * FROM users WHERE username = ?";\nPreparedStatement pstmt = connection.prepareStatement(query);\npstmt.setString(1, username);\nResultSet rs = pstmt.executeQuery();
\n\n

2. XSS (Cross-Site Scripting)

\n

XSS हमले वेब पेजों में क्लाइंट-साइड स्क्रिप्ट इंजेक्ट करने की अनुमति देते हैं। मुख्य सुरक्षा आउटपुट को एस्केप करना है।

\n\n

कमजोर कोड (JSP):

\n
<%= request.getParameter("comment") %>
\n\n

सुधारित कोड:

\n
<%= Encode.forHtml(request.getParameter("comment")) %>
\n\n

विश्वसनीय एस्केपिंग के लिए OWASP Java Encoder लाइब्रेरी का उपयोग करें:

\n
import org.owasp.encoder.Encode;\nString safeOutput = Encode.forHtml(userInput);
\n\n

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

\n

जावा डिसीरियलाइज़ेशन रिमोट कोड एक्ज़ीक्यूशन (RCE) का कारण बन सकता है।

\n\n

कमजोर कोड:

\n
ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());\nObject obj = ois.readObject(); // खतरा!
\n\n

सुरक्षा के लिए सिफारिशें:

\n
    \n
  • अविश्वसनीय स्रोतों से डेटा को डिसीरियलाइज़ न करें
  • \n
  • डिसीरियलाइज़ेशन के दौरान क्लासों की श्वेत सूची का उपयोग करें
  • \n
  • जावा सीरियलाइज़ेशन के बजाय JSON या XML का उपयोग करें
  • \n
\n\n
// क्लास जांच के साथ सुरक्षित दृष्टिकोण\nObjectInputStream ois = new ObjectInputStream(inputStream) {\n    @Override\n    protected Class<?> resolveClass(ObjectStreamClass desc) throws IOException, ClassNotFoundException {\n        if (!allowedClasses.contains(desc.getName())) {\n            throw new InvalidClassException(desc.getName(), "अनधिकृत डिसीरियलाइज़ेशन");\n        }\n        return super.resolveClass(desc);\n    }\n};
\n\n

4. CSRF (Cross-Site Request Forgery)

\n

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

\n\n

टोकन के साथ सुरक्षा (Spring Security):

\n
@Configuration\n@EnableWebSecurity\npublic class SecurityConfig extends WebSecurityConfigurerAdapter {\n    @Override\n    protected void configure(HttpSecurity http) throws Exception {\n        http.csrf().csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse());\n    }\n}
\n\n

फॉर्म में टोकन जोड़ना:

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

5. अपवादों के माध्यम से सूचना रिसाव

\n

विस्तृत त्रुटि संदेश एप्लिकेशन की आंतरिक संरचना को उजागर कर सकते हैं।

\n\n

कमजोर कोड:

\n
try {\n    // व्यावसायिक तर्क\n} catch (SQLException e) {\n    response.getWriter().println("त्रुटि: " + e.getMessage()); // रिसाव!\n}
\n\n<

ब्लॉग

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