xss attack - для исправления требуется больше информации

Может кто-нибудь объяснить, как работает ниже уязвимость XSS (что делает), а также лучший способ исправить (с помощью PHP)

https://www.domain.com/page.php?tid=11%22%3E%3Cimg%20src=x%20onerror=alert%28document.cookie%29%3E&id=82

1 ответ

Решение

Ответ: Вы явно выводите необработанный пользовательский ввод ($_GET['tid'] в вашем случае) где-то на вашей странице, не "очищая" его от специальных символов HTML.

"> часть закрывает ранее открытый HTML-тег на вашей странице,

<img src=x onerror=alert(document.cookie)> вставки img тег с неверным источником, что приведет к ошибке загрузки, срабатыванию onerrorсвязанный JavaScript.

Так что... если у вас есть что-то подобное в вашем PHP-коде:

    <a href="<?php echo $_GET['tid']?>"> some link </a>

Он будет возвращен в браузер следующим образом (используя $ _GET ['tid'] из вашего примера):

    <a href=""><img src=x onerror=alert(document.cookie)>"> some link </a>

Так что браузер будет:

1) Разбор a как ссылка с пустым href

2) Try to load image and fail

3) Выполнить img"s onerror javascript, which will alert cookie (in an actual attack this part will not just alert cookies, but send them to attacker's server)

Предложения:

1) Never trust/output raw user input (htmlspecialchars() для тебя $_GET параметры)

2) Accept/parse appropriate types only (intval() или же (int) для тебя $_GET параметры)

Другие вопросы по тегам