Как очистить возвращаемые значения getCookies (), getRequestURL () в HttpServletRequest? - PullRequest
2 голосов
/ 14 февраля 2012

В моем проекте Java EE я установил фильтр в файле web.xml, который будет использовать класс MyHttpServeltRequestWrapper (extends HttpServletRequestWrapper). Я переопределяю методы getParameter / getParametervalues ​​в нем, чтобы предотвратить любые атаки XSS.

Я выполняю экранирование HTML для значений параметров.

Может кто-нибудь сказать, если это хорошая идея переопределить методы, такие как

  • getRequestURL()
  • getRequestURI()
  • getQueryString(),
  • getCookies() методы для включения в логику предотвращения XSS.

Могу ли я использовать URLEncoder для значений, возвращаемых getRequestURL(), getRequestURI(), getQueryString()?

А как насчет методов getCookies? Каким образом это делает мои страницы уязвимыми для атак, если я оставляю свой метод getcookies() безанизированным?

1 Ответ

0 голосов
/ 14 февраля 2012

Вы идете по неверному пути в отношении предотвращения XSS.XSS не наносит вреда серверному коду.Это только вредит сгенерированному выводу HTML.Это будет вредно, когда вы встраиваете управляемый пользователем ввод, не выходящий за пределы существующего исходного кода HTML, чтобы браузер интерпретировал его как часть реального исходного кода HTML.Вам необходимо заменить специальные символы HTML, такие как <, > и т. Д., На &lt;, &gt; и т. Д., Чтобы они отображались как есть.

Сделайте это в представлении (Только JSP)Просто используйте JSTL <c:out> или fn:escapeXml() везде, где вы повторно отображаете контролируемый пользователем ввод.Они будут экранированы от специальных символов HTML.

Например,

<c:out value="${someBean.someUserControlledValue}" />
<c:out value="${cookie.cookiename}" />
<c:out value="${header.headername}" />
<c:out value="${param.paramname}" />
<input type="text" name="foo" value="${fn:escapeXml(param.foo)}" />

См. Также:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...