SORU
11 EYLÜL 2009, Cuma


İstek sunucu filtresi ile parametre değiştir

Varolan bir web uygulaması Tomcat 4.1 üzerinde çalışıyor. Bir sayfa ile XSS bir sorun var ama kaynağını değiştirmek istemiyorum. Sayfa tarafından görülür önce parametre dezenfekte için sunucu uygulaması bir filtre yazmaya karar verdim.

Böyle bir Filtre sınıfı yazmak istiyorum:

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);
    request.setParameter("dangerousParamName", goodValue);
    chain.doFilter(request, response);
  }

  public void destroy() {
  }

  public void init(FilterConfig filterConfig) {
  }
}

Ama ServletRequest.setParameter yok.

Nasıl istek değerini parametre zinciri aşağı isteği geçirmeden önce değiştirebilir miyim?

CEVAP
11 EYLÜL 2009, Cuma


Belirtildiği gibi HttpServletRequest setParameter bir yöntemi yok. Bu sınıf istemciden gelen isteği temsil beri kasıtlı olduğunu, ve parametre değiştirme temsil eder.

Tek çözüm başka bir isteği sarmak için izin verir HttpServletRequestWrapper sınıf, kullanmaktır. Bu alt ve dezenfekte değer döndürmek getParameter yöntemi geçersiz kılabilirsiniz. Sonra orijinal isteğini yerine chain.doFilter paket isteği iletebilirsiniz.

Biraz çirkin, ama bu sunucu uygulaması API yapman gerektiğini söylüyor. Eğer doFilter Bazı sunucu uygulaması kaplar başka bir şey geçmek için çalışırsanız spec ihlal ettin şikayet edecek, ve bunu işlemek için reddeder.

Daha zarif bir çözüm daha fazla çalışma isteği beklediğini böylece parametre işleyen özgün sunucu uygulaması/JSP değiştiröznitelikyerine bir parametre. Filtre parametre inceler, ... ... temizlediği iddia ediliyor, ve öznitelik (request.setAttribute) kullanarak dezenfekte değeri ile ayarlar. Sınıflara hayır, hayır sızdırma, ama diğer parçaları değiştirmek için gerektirir uygulama.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • MultiPlayStationMan

    MultiPlaySta

    17 Aralık 2009
  • ravinderosahn

    ravinderosah

    20 Temmuz 2009
  • REK Roth Productions

    REK Roth Pro

    8 Ocak 2011