Host Header Injection
2. Типичный уязвимый код:
public void resetPasswordLink(HttpServletRequest request) {
// retrieves the host from the request header
String host = request.getHeader("Host");
String email = request.getParameter("email");
HttpSession session = request.getSession();
if (session != null) {
String token = generateResetToken(email);
// Password reset link is constructed with the retrieved host
// for the token that has just been generated.
StringBuilder resetLinkBuilder = new StringBuilder()
.append(host)
.append("?reset")
.append(token);
// Send the email
sendEmail(email, resetLinkBuilder.toString());
}
}3. Смягчения:
3.1. Белый список разрешенных доменов:
3.2. Защита абсолютных URL-адресов:
4. Выводы:
Last updated