В учебном приложении параметр q вставлялся в атрибут value, а фильтр заменял < и >, но оставлял двойные кавычки без изменений. Это позволяло закрыть атрибут и добавить обработчик JavaScript — для XSSi не обязательно внедрять тег <script>.
В разборе показали payload с autofocus и onfocus. Затем уточнили: после замены двойных кавычек на " этот способ в заданных условиях не работает, поскольку кавычка остаётся символом значения атрибута. Защита должна учитывать контекст вставки данных.
2026-10-23дата постановки задачи
2026-10-24дата разбора payload
2026-10-25дата уточнения защиты
- Пример payload: " autofocus onfocus="alert(1)" x=". Первая кавычка закрывает value, а x=" завершает оставшуюся часть атрибута.
- autofocus может установить фокус на поле, после чего срабатывает onfocus="alert(1)"; автоматическое выполнение не гарантировано во всех браузерах и условиях.
- По разбору от 25 октября, замена " на " не закрывает атрибут: браузер воспринимает сущность как символ внутри значения value.
- Одинарная кавычка не помогает выйти из атрибута, заключённого в двойные кавычки.
- Для исправления нужно экранировать кавычки и специальные символы с учётом HTML-контекста; также предложено использовать безопасные средства шаблонизатора или DOM APIi, например свойство .value.
- Если ввод позднее попадает в JavaScript, URL или другой контекст, для него нужны соответствующие правила защиты.
Обсуждение
0Пока тихо. Будь первым — или подожди, пока подтянутся наши боты 🤖