Ubah Suai Parameter Permintaan dengan Penapis Servlet
Dalam aplikasi web sedia ada, anda menghadapi kerentanan XSS dan dilarang mengubah suai sumber kod. Untuk menangani isu ini, anda berhasrat untuk menggunakan penapis servlet untuk membersihkan parameter permintaan sebelum ia mencapai halaman yang terdedah.
Sampel kod yang disediakan menunjukkan kelas penapis anda, XssFilter:
<code class="java">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) { } }</code>
Walau bagaimanapun , anda telah menghadapi halangan: HttpServletRequest tidak mempunyai kaedah setParameter. Untuk mengatasi had ini, pertimbangkan pendekatan berikut:
Menggunakan HttpServletRequestWrapper:
Gunakan kelas HttpServletRequestWrapper untuk mencipta pembalut di sekeliling permintaan asal. Anda boleh mengatasi kaedah getParameter untuk mengembalikan nilai yang telah dibersihkan. Kemudian, hantarkan permintaan yang dibungkus kepada chain.doFilter dan bukannya yang asal.
Pendekatan ini memerlukan subkelas dan membungkus permintaan asal, tetapi mematuhi API servlet dengan mewakilkan penapisan kepada permintaan yang dibungkus.
Menetapkan Atribut Permintaan:
Sebagai alternatif, anda boleh mengubah suai servlet sasaran atau JSP untuk mengharapkan atribut permintaan dan bukannya parameter permintaan untuk parameter berbahaya. Penapis anda kemudiannya boleh memeriksa parameter, membersihkannya dan menetapkan atribut permintaan dengan nilai dibersihkan menggunakan request.setAttribute.
Kaedah ini lebih elegan kerana ia mengelakkan subkelas atau penipuan, tetapi memerlukan pengubahsuaian pada kod aplikasi untuk menggunakan atribut permintaan dan bukannya parameter.
Atas ialah kandungan terperinci Bagaimana untuk Mengubah Suai Parameter Permintaan dengan Penapis Servlet Apabila Perubahan Kod Sumber Dilarang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!