Vulnerabilidades Detectadas en Proyecto JavaWeb

  • Vulnerabilidad de inyección de caracteres multibyte (Wide Byte Injection).
  • Vulnerabilidad de inyección de framework.
  • Vulnerabilidad de inyección de enlaces.

La solución principal para estos problemas es configurar un filtro en el proyecto que filtre los caracteres especiales en las URLs.

Filtro para Configurar Cookies

A continuación se muestra un ejemplo de filtro para establecer la propiedad HttpOnly en las cookies, lo cual ayuda a prevenir el acceso a las cookies mediante JavaScript.

package com.example.security.filters;

import javax.servlet.*;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;

public class SeguridadCookieFilter implements Filter {

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        if (!(request instanceof HttpServletRequest)) {
            chain.doFilter(request, response);
            return;
        }
        HttpServletRequest httpRequest = (HttpServletRequest) request;
        HttpServletResponse httpResponse = (HttpServletResponse) response;
        Cookie[] cookies = httpRequest.getCookies();
        if (cookies != null) {
            for (Cookie cookie : cookies) {
                HttpSession session = httpRequest.getSession();
                if (session != null) {
                    String sessionId = session.getId();
                    httpResponse.addHeader("Set-Cookie", "JSESSIONID=" + sessionId + "; Path=/app; Secure; HttpOnly");
                }
            }
        }
        chain.doFilter(httpRequest, httpResponse);
    }

    @Override
    public void destroy() {}

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {}
}

Filtro para Prevenir XSS y SQL Injection

A continuación se presenta un ejemplo incompleto de un filtro que podría ayudar a prevenir ataques de inyección de código y scripts maliciosos (XSS) y SQL.

package com.example.security.filters;

import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;

public class ProteccionXssSqlFilter implements Filter {

    @Override
    public void destroy() {}

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        HttpServletRequest httpRequest = (HttpServletRequest) request;
        // Implementar lógica para filtrar parámetros y prevenir inyecciones
        chain.doFilter(httpRequest, response);
    }

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {}
}

Etiquetas: JavaWeb seguridad Filtros Cookies XSS

Publicado el 9-16 05:14