xss attack - для исправления требуется больше информации
Может кто-нибудь объяснить, как работает ниже уязвимость XSS (что делает), а также лучший способ исправить (с помощью PHP)
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
параметры)