Межсайтовый скриптинг XSS - тег Jsp ‹Input›

Следующий фрагмент кода в моем JSP вызвал уязвимость межсайтового сценария для входного тега.

<form name="acctFrm" method="post" action="<%=contextPath%>/form/acctSummary?rpt_nm=FIMM_ACCT_SUMM_RPT">
<table>
 <tr>
  <td>Account Id:</td>
  <td>
   <input class="tbl1" type="text" id="acctId" name="acctId" size="20" maxlength="10" value="<%=rptBean.getAcctId()%>"/>
   <a href="javascript:doAcctSubmit()"><img class="tbl1" src="<%=contextPath%>/img/Submit.gif" border="0" /></a>
  </td>
 </tr>
</table>
</form>

Во время тестирования на проникновение они смогли предупредить пользователя о каком-то случайном сообщении, внедрив сценарий оповещения в атрибут value тега, как показано ниже.

<input class="tbl1" type="text" id="acctId" name="acctId" size="20" maxlength="10" value="1"><script>alert(12345)</script>" />

В чем проблема и что можно исправить.

Я читал несколько онлайн-ссылок по XSS, но не был на 100% уверен, в чем может быть проблема.

Любая помощь будет принята с благодарностью.

Спасибо, Дина


person Deena    schedule 13.08.2012    source источник


Ответы (4)


Я использовал следующее решение,

Скриплет в атрибуте value является проблемой, я заменил его тегом jstl, я где-то читал, что теги jstl имеют встроенный механизм экранирования, чтобы избежать проблем с xss.

<input class="tbl1" type="text" id="acctId" name="acctId" size="20" maxlength="10" value="<c:out value=${rptBean.acctId}"/>"/>

Это хорошо подходит для моей проблемы.

Спасибо

person Deena    schedule 14.08.2012

Кажется, что тестеры на проникновение смогли манипулировать своим сеансом так, что rptBean.getAcctId () возвращал произвольную строку. Если бы они могли вставить кавычки и правую скобку, они могли бы «принудительно закрыть» тег input и вставить свой собственный тег script.

Похоже, у тестеров на проникновение есть метод, возвращающий строку 1"><script>alert(12345)</script>.

Это указывает на то, что вам нужно экранировать данные при записи на страницу. Я бы посоветовал взглянуть на ответ на экранирование HTML в jsp.

Также помните, что код не обязательно должен быть «идеально» отформатирован, чтобы браузер отображал его «правильно». Вот несколько ссылок о том, как злоумышленники могут попытаться обойти фильтры XSS:

Всегда относитесь к пользовательским данным как к «опасным» и будьте осторожны при их отображении на странице.

person ryucl0ud    schedule 13.08.2012

Похоже, что использование тега jstl <c:out value=""> в атрибуте value приведет к ошибкам в тегах jstl <form options>,

подробнее Предотвращение XSS в веб-приложении JSP / сервлетов

person Akhil S Kamath    schedule 20.07.2016

если getAcctId() возвращенные данные поступают из БД, вы можете отфильтровать их перед отправкой клиенту. например, проверьте, что данные должны быть числом.

person Jafar Mirzaei    schedule 02.10.2012