İ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
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.
Statik sınıf örneği bir istek veya ASP...
İstek/sunucu yanıtı otomatik tamamlama...
Nasıl Java sunucu uygulaması bir filtr...
Nasıl bir HTTP parametre ekleme OLSUN ...
Neden Cache-Control istek başlığı (sun...