У меня есть servlet filter
, который вызывает класс RequestWrapper
для проверки и изменения заголовка запроса.HttpServletRequestWrapper - не удалось изменить заголовок запроса
public final class RequestWrapper extends HttpServletRequestWrapper
Я перекрывая getHeader
метод внутри RequestWrapper
класса, чтобы изменить заголовок запроса.
public String getHeader(String name) {
String value = super.getHeader(name);
if (value == null)
return null;
return removeUnexpectedCharacters(value);
}
private String removeUnexpectedCharacters(String value)
{
value = value.replaceAll("script", "");
value = value.replaceAll("alert", "");
System.out.println("before return: " + value);
return value;
}
В журналах сервера, я могу видеть, что этот код становится выполнен и это на самом деле удаления символов тоже, однако при response
визуализации в браузер он содержит удаленные символы тоже.
Когда я запрашиваю страницу с сервера с указанным ниже URL-адресом, он должен удалить черные записи, такие как script
, alert
от username
.
https://xxx:8443/ProjectName/login?username=%3E%22%27%3E%3Cscript%3Ealert%2860%29%3C%2Fscript%3E
Ожидаемый URL:
https://xxx:8443/ProjectName/login?username=%3E%22%27%3E%3C%3E%2860%29%3C%2F%3E
Я не в состоянии понять, что вопрос здесь. Может ли кто-нибудь помочь мне в этом?
На самом деле большинство проблем с уязвимостью уже исправлены в приложении. Существуют две основные проблемы: 1. Невозможно удалить черный список из параметра запроса. 2. Письменный код для удаления черного списка из заголовка запроса работает не так, как ожидалось. –
@BalusC Можете ли вы мне помочь в том, как удалить черный список из параметра запроса. Предположим, я должен сделать это с помощью существующего пути. Поскольку изменение все займет много времени, и я не в этом положении. Надеюсь ты понимаешь. –