Как исправить уязвимость AccessControl.Bypass в IBM App Scan при использовании requestDispatcher для HTML5mode Angular - PullRequest
0 голосов
/ 19 июня 2019

У меня есть Java-приложение Angular, в котором включен URL-адрес режима HTML5, т. Е. Используется Angular PathLocationStrategy. После включения режима HTML5 приложение работает нормально, когда вы запускаете приложение, например https://app.myapplication.com/, и затем перемещаетесь внутри.Но происходит сбой при запуске приложения, например https://app.myapplication.com/home, поскольку сервер пытается отобразить путь / home, даже если / home должен обрабатываться Angular.

Чтобы это исправить, я ввел HTML5modeОтфильтруйте, как указано ниже, для любого URL, кроме запроса статических файлов или API, он вернет index.html

public class Html5ModeUrlSupportFilter extends OncePerRequestFilter {
@Override
protected void doFilterInternal(HttpServletRequest request,
                                HttpServletResponse response,
                                FilterChain filterChain)
                                throws ServletException, IOException {
    if (isStatic(request) || isApi(request)) {
        filterChain.doFilter(request, response);
    } else {
        request.getRequestDispatcher("/index.html").forward(request, response);
    }
}

private boolean isApi(HttpServletRequest request) {
    return request.getRequestURI().indexOf("/api/") >= 0;
}

private boolean isStatic(HttpServletRequest request) {
    return Pattern.matches(".+\\.((html)|(css)|(js))$", request.getRequestURI());
}

Теперь, когда я запускаю проверку приложения на этом, я сталкиваюсь с уязвимостью AccessControl.Bypass на request.getRequestDispatcher("/index.html").forward(request, response); как это преодолеть.Я зарегистрировал этот фильтр в своем файле web.xml для шаблона URL-адреса ' / *', и мой диспетчер Spring зарегистрирован для шаблона URL-адреса ' / api '.

Любойпомощь или предложение о том, как преодолеть это высоко ценится.Заранее спасибо

...