[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: XSS уязвимость?
KonstantinK
Нужна помощь. На одном из обслуживаемых нами сайтов мы обнаружили такую штуку - если прибавить в URL вот такое #"><img src=x onerror=prompt(0);> то в Chrome этот js отрабатывает.
Я так понимаю это потенциальная дырка для XSS атаки.
Поскажите как побороть, пните в нужном направлении или дайте какую-нибудь статью умную прочитать, а то чего то не соображу как это побороть.
AllesKlar
Перед выводом любых данных в браузер из базы, из гет или пост параметров, из всего что было раннее занесено пользователем, нужно использовать htmlspecialchars().

Найдите место, где выводится этот $_GET и оберните его htmlspecialchars()

А вообще, это не дело выводить данные, полученные из $_GET
Обычно, передаваемые скрипту параметры нужны для управления логикой или сохранения их где-либо.
Хотя, возхможно, что у Вас особая ситуация и именнно так и нужно


_____________
[продано копирайтерам]
KonstantinK
не совсем понял , данные уже есть в url мне нужно как то сделать чтоб то что лишнее в url браузером не обработалось. причем если я в index.php ставлю что то типа
echo var_dump($_GET);
то получаю пустой массив, т.е. то что после # не передается мне в php ну и соотвественно я не могу это обработать.
Или я что то не так понимаю?
AllesKlar
KonstantinK
Ссылку полностью напиши (домен можно поменять)

_____________
[продано копирайтерам]
killer8080
KonstantinK
очевидно в JS коде есть что то типа
document.write(location.hash)
KonstantinK
AllesKlar
Мы друг друга не понимаем видимо, не имеет значения какой домен. Важно что для этого сайта хоть локально, хоть на продакшине в Chrome эта фигня отрабатывает, а значит можно подсунуть нашему потенциальному пользователю ссылку на наш сайт с js к примеру который отправит злоумушленнику по аяксу пароль и логин(ну это как вариант)
KonstantinK
killer8080 нет я написал что есть в ссылке , но нонятное дело что после # можно запихнуть что угодно
killer8080
Цитата (KonstantinK @ 25.03.2014 - 09:43)
killer8080 нет я написал что есть в ссылке , но нонятное дело что после # можно запихнуть что угодно

раз это код отрабатывает, значит что то внедряет его в тело документа. Из адресной строки код отработает как js, только при наличии префикса псевдо протокола javascript:// но никак не из якоря.
KonstantinK
killer8080
ок согласен, щас буду отключать по очереди наши js файлы и попытаюсь найти где эта хрень обрабатывается.
Если есть еще варианты и предложения готов выслушать.
killer8080
Цитата (KonstantinK @ 25.03.2014 - 09:52)
Если есть еще варианты и предложения готов выслушать.

поиск по исходному html и всем подключаемым js файлам по .hash



Спустя 1 минута, 27 секунд killer8080 написал(а):
KonstantinK
кстати, а по чему хром? Работает только в нем, или в других браузерах не пробовал?
KonstantinK
В FF не работает других у меня браузеров нету я под Ubuntu работаю
KonstantinK
killer8080 Спасибо за помощь. Действительно нашлась js функция которая обрабатывала url вот таким образом
showPickerByAnchor: function(url) 
{
if (url && url != '#' && url.indexOf('#') != -1) {
var parts = url.split('#');
$('#' + parts[1]).click();
}
}
,

ей передавалось location.href
Прикол в том что FF сразу кодирует location.href, а вот Chrome этого не делает. В общем пришлось написать функцию аналог php htmlspecialchars и обрабатывать location.href сначала ей. И теперь все в порядке. :)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.