تعديل معلمة الطلب باستخدام عامل تصفية Servlet
في تطبيق ويب موجود، تواجه ثغرة XSS ويُحظر عليك تعديل المصدر شفرة. لمعالجة هذه المشكلة، أنت تنوي استخدام مرشح servlet لتطهير معلمات الطلب قبل وصولها إلى الصفحة المعرضة للخطر.يوضح نموذج التعليمات البرمجية المقدم فئة عامل التصفية الخاص بك، XssFilter:import java.io.*; استيراد javax.servlet.*; الطبقة النهائية العامة XssFilter تنفذ عامل التصفية { doFilter الفراغ العام (طلب ServletRequest، استجابة ServletResponse، سلسلة FilterChain) يلقي IOException، ServletException { String badValue = request.getParameter("dangerousParamName"); String goodValue = sanitize(badValue); // غير قادر على تعديل المعلمة باستخدام request.setParameter chain.doFilter(request, Response); } تدمير الفراغ العام () { } الحرف الفراغي العام (FilterConfig filterConfig) { }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:
استخدم فئة HttpServletRequestWrapper لإنشاء غلاف حول الطلب الأصلي. يمكنك تجاوز طريقة getParameter لإرجاع القيمة المعقمة. بعد ذلك، قم بتمرير الطلب المغلف إلى chain.doFilter بدلاً من الطلب الأصلي.
يتطلب هذا الأسلوب تصنيفًا فرعيًا وتغليف الطلب الأصلي، ولكنه يتوافق مع واجهة برمجة تطبيقات servlet عن طريق تفويض التصفية للطلب المغلف.
إعداد سمة الطلب:بدلاً من ذلك، يمكنك تعديل servlet الهدف أو JSP لتوقع سمة طلب بدلاً من معلمة طلب للمعلمة الخطيرة. يمكن لمرشحك بعد ذلك فحص المعلمة، وتعقيمها، وتعيين سمة الطلب بالقيمة المعقمة باستخدام request.setAttribute.
هذه الطريقة أكثر أناقة لأنها تتجنب التصنيف الفرعي أو الانتحال، ولكنها تتطلب تعديلات على كود التطبيق لاستخدام سمة الطلب بدلاً من المعلمة.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3