"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > जब स्रोत कोड परिवर्तन निषिद्ध हैं तो सर्वलेट फ़िल्टर के साथ अनुरोध पैरामीटर्स को कैसे संशोधित करें?

जब स्रोत कोड परिवर्तन निषिद्ध हैं तो सर्वलेट फ़िल्टर के साथ अनुरोध पैरामीटर्स को कैसे संशोधित करें?

2024-12-21 को प्रकाशित
ब्राउज़ करें:721

How to Modify Request Parameters with a Servlet Filter When Source Code Changes Are Forbidden?

सर्वलेट फ़िल्टर के साथ अनुरोध पैरामीटर को संशोधित करें

मौजूदा वेब एप्लिकेशन में, आप XSS भेद्यता का सामना कर रहे हैं और स्रोत को संशोधित करने से प्रतिबंधित हैं कोड. इस समस्या का समाधान करने के लिए, आप अनुरोध पैरामीटरों को कमजोर पेज तक पहुंचने से पहले साफ करने के लिए एक सर्वलेट फ़िल्टर का उपयोग करना चाहते हैं। java.io.*; आयात javax.servlet.*; सार्वजनिक अंतिम वर्ग XssFilter फ़िल्टर लागू करता है { सार्वजनिक शून्य doFilter (ServletRequest अनुरोध, ServletResponse प्रतिक्रिया, फ़िल्टरचेन श्रृंखला) IOException, ServletException फेंकता है { स्ट्रिंग BadValue = request.getParameter("dangerousParamName"); स्ट्रिंग गुडवैल्यू = सैनिटाइज़(बैडवैल्यू); // request.setParameter का उपयोग करके पैरामीटर को संशोधित करने में असमर्थ चेन.डूफ़िल्टर(अनुरोध, प्रतिक्रिया); } सार्वजनिक शून्य नष्ट() { } सार्वजनिक शून्य init(FilterConfig फ़िल्टरकॉन्फिग) { } }

हालाँकि, आपको एक बाधा का सामना करना पड़ा है: HttpServletRequest में setParameter विधि का अभाव है। इस सीमा को दूर करने के लिए, निम्नलिखित तरीकों पर विचार करें:

import java.io.*;
import javax.servlet.*;

public final class XssFilter implements Filter {

  public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
      throws IOException, ServletException
  {
    String badValue = request.getParameter("dangerousParamName");
    String goodValue = sanitize(badValue);
    // Unable to modify parameter using request.setParameter
    chain.doFilter(request, response);
  }

  public void destroy() {
  }

  public void init(FilterConfig filterConfig) {
  }
}

मूल अनुरोध के चारों ओर एक रैपर बनाने के लिए HttpServletRequestWrapper वर्ग का उपयोग करें। आप सैनिटाइज्ड मान वापस करने के लिए getParameter विधि को ओवरराइड कर सकते हैं। फिर, लपेटे गए अनुरोध को मूल के बजाय चेन.doFilter पर पास करें। &&&]

सेटिंग अनुरोध विशेषता:

वैकल्पिक रूप से, आप लक्ष्य सर्वलेट या जेएसपी को संशोधित कर सकते हैं खतरनाक पैरामीटर के लिए अनुरोध पैरामीटर के बजाय अनुरोध विशेषता की अपेक्षा करना। आपका फ़िल्टर तब पैरामीटर की जांच कर सकता है, उसे साफ़ कर सकता है, और request.setAttribute का उपयोग करके अनुरोध विशेषता को सैनिटाइज़ किए गए मान के साथ सेट कर सकता है। पैरामीटर के बजाय अनुरोध विशेषता का उपयोग करने के लिए।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3