У меня есть приложение, у которого есть страница справки с горизонтальным меню сверху.
Когда пользователь нажимает на ссылку 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");
}
}