Управление заголовком: SMTP

Я столкнулся с проблемой, из-за которой фортифицировать не удалось из-за

Управление заголовком: SMTP

Я пробовал несколько решений. Однако укрепить все равно не удается.

Мой код, как показано ниже:

@Override
public Map<String, String> sendEmail(EmailBody parameters, String form) {
    Map<String, String> result = new HashMap<>();
    String emailSubjectValue = parameters.getEmailSubject();

    // Check email subject for Manipulation

    if (isHeaderInjection(emailSubjectValue)) {
      result.put("error", "invalid email Subject");
      return result;
    }

    try{
    ....
      message.setSubject(emailSubjectValue, "UTF-8");
    }...

    private static boolean isHeaderInjection(String value) {
    if (value == null)
        return false;
    else if ((value.indexOf('\n') != -1 || value.indexOf('\r') != -1) || value.indexOf("%0A") != -1) {
        return true;
    }
    return false;

    }
}

Несмотря на то, что я выполняю проверку перед настройкой объекта emailSubject, сканирование все равно не выполняется.

Пожалуйста, дайте мне знать, если есть какое-либо решение?

Спасибо

0 ответов

Насколько я знаю, вы должны избегать любых CRLF внутри темы письма.

Поскольку уязвимости манипулирования заголовком SMTP возникают, когда приложение включает вредоносные данные в свой вывод, один из логических подходов состоит в том, чтобы проверить данные непосредственно перед их использованием в контексте заголовка и убедиться, что нет недопустимых символов CRLF, которые могут нарушить структуру заголовка.

Перед тем как задать тему, вы можете убедиться, что этого не произойдет, используя:

String normalizedSubject = StringUtils.normalizeSpace(emailSubjectValue);
Другие вопросы по тегам