Rumah > Java > javaTutorial > teks badan

Bagaimana untuk Mengubah Suai Parameter Permintaan dengan Penapis Servlet Apabila Perubahan Kod Sumber Dilarang?

Patricia Arquette
Lepaskan: 2024-11-05 06:21:02
asal
224 orang telah melayarinya

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

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan