Управление заголовком: 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);