Как исправить проблему статического сканирования Fortify, связанную с Open Redirect в контроллере Spring MVC? - PullRequest
0 голосов
/ 13 мая 2019

У меня есть приложение, у которого есть страница справки с горизонтальным меню сверху. Когда пользователь нажимает на ссылку Help в меню, вызывается следующий контроллер, и пользователь перенаправляется на страницу, которая НЕ находится в моем текущем приложении, но является частью другого приложения, которым владеет другой отдел в моей организации.

Чтобы исправить проблему, я добавил новый метод isValidSite() и добавил несколько проверок для проверки URL, надеясь, что Fortify перестанет жаловаться на это, но не повезло.

Пожалуйста, руководство.

Ошибка Fortify S3:

The file HelpController.java passes unvalidated data to an HTTP redirect function on line 26: return "redirect:" + helpUrl;. 
Allowing unvalidated input to control the URL used in a redirect can aid phishing attacks.

HelpController.java

@Controller
@RequestMapping("/help.htm")
public class HelpController {

    private static String helpUrl = "http://some.other.app.within.my.org/help-page.html";
    private static Logger log = Logger.getLogger("HelpController.class");

    @RequestMapping(method = RequestMethod.GET)
    protected String handleRequestInternal(HttpServletRequest request, HttpServletResponse response) {
        if (isValidSite()) {
            log.info("Redirecting to: " + helpUrl);
            return "redirect:" + helpUrl;
        }
        log.error("URL should have my.org within it: " + helpUrl);
        return "errors/runtime-error";
    }

    //ADDED THIS TO FIX THE FORTIFY SCAN ISSUE, BUT NO LUCK :(
    private boolean isValidSite() {
        return StringUtils.isNotBlank(helpUrl) && helpUrl.contains("my.org");
    }

}
...