<a href='javascript: for(i = 0; i < 9999; i++) alert(i);'>Some text</a>
Как предотвратить javascript код?
Спустя 18 минут, 35 секунд (3.02.2012 - 16:17) Nikitian написал(а):
Проверять введённый адрес через parse_url()
Спустя 3 минуты, 52 секунды (3.02.2012 - 16:21) SerginhoLD написал(а):
Winston, он имеет ввиду что пользователь вводит параметр href ссылки, который пишется в базу, если я правильно понял )
lysosutrin2
ну можно проверить, что стоит в начаче того что ввел пользователь, если есть javascript: в начале, то или вырезать, или вывести ошибку пользователю, что так делать нельзя
lysosutrin2
ну можно проверить, что стоит в начаче того что ввел пользователь, если есть javascript: в начале, то или вырезать, или вывести ошибку пользователю, что так делать нельзя
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
Спустя 7 минут, 56 секунд (3.02.2012 - 16:29) lysosutrin2 написал(а):
Я решил просто прогонять через регулярное выражение)
Спустя 9 минут, 39 секунд (3.02.2012 - 16:39) killer8080 написал(а):
$link = trim($link);
$link = htmlspecialchars( preg_replace('#^(https?://|javascript:.*$)#iu', '', $link) );
$link = $link ? '<a href="http://'.$link.'">'.htmlspecialchars($link_text).'</a>' : 'XSS';
Спустя 53 минуты, 47 секунд (3.02.2012 - 17:32) Белый Тигр написал(а):
На мой взгляд первый совет самый верный) Или так или валидатором каким-нибудь.
Спустя 9 минут, 59 секунд (3.02.2012 - 17:42) killer8080 написал(а):
Цитата (Белый Тигр @ 3.02.2012 - 16:32) |
На мой взгляд первый совет самый верный) Или так или валидатором каким-нибудь. |
но недостаточный, нужно не только схему проверять. Как вариант обхода защиты
http://site.ru" onmouseover="alert(document.cookie)"
Спустя 12 часов, 2 минуты, 52 секунды (4.02.2012 - 05:45) Белый Тигр написал(а):
Цитата |
но недостаточный, нужно не только схему проверять. Как вариант обхода защиты |
Хм, не думал что parse_url() может сьесть такую строку. Оказывается может. Тогда лишь валидаторы - filter_var() с флагом FILTER_VALIDATE_URL или что-то готовое, как валидаторы фреймворков.
Спустя 49 минут, 9 секунд (4.02.2012 - 06:34) inpost написал(а):
При выводе преобразовывать в HTML-сущности через htmlspecialchars.
Ничего плохого в том, что кто-то пытался ввести криво - нет, ведь это не уязвимость.
Ничего плохого в том, что кто-то пытался ввести криво - нет, ведь это не уязвимость.
Спустя 1 день, 48 минут, 31 секунда (5.02.2012 - 07:23) Белый Тигр написал(а):
Цитата |
При выводе преобразовывать в HTML-сущности через htmlspecialchars. |
А какой смысл? Если взять код с eval/fromCharCode и javascript:, то htmlspecialchars() ничего в нём не изменит.
javascript:eval(fromCharCode(...)+fromCharCode(...))
Спустя 3 часа, 33 секунды (5.02.2012 - 10:23) inpost написал(а):
Белый Тигр
Давай поговорим о другом, какой смысл хранить не настоящие ссылки?
Если ссылки на внешние ресурсы, то ссылка должна начинаться с http://, а значит ещё перед тем, как добавляем ссылку, мы проверяем в начале наличие http://, и в случае его отсутствия - дописываем.
И это относится не к безопасности, а к адекватности ссылок типа site.ru, потому что в начале в обязательном порядке необходимо будет дописать http:// .
Мой ответ мне напомнил ответ Киллера выше, посмотрел и точно, мы об одном и том же говорим.
Пункт №1. Создать АДЕКВАТНЫЙ СКРИПТ. Мы выставляем ссылки на сайты, значит site.ru - необходимо преобразовать в адекватный вид: http://site.ru.
Пункт №2. Говорим о безопасности, обработка Кавычек и знаков больше/меньше - тут просто htmlspecialchars.
Давай поговорим о другом, какой смысл хранить не настоящие ссылки?
Если ссылки на внешние ресурсы, то ссылка должна начинаться с http://, а значит ещё перед тем, как добавляем ссылку, мы проверяем в начале наличие http://, и в случае его отсутствия - дописываем.
И это относится не к безопасности, а к адекватности ссылок типа site.ru, потому что в начале в обязательном порядке необходимо будет дописать http:// .
Мой ответ мне напомнил ответ Киллера выше, посмотрел и точно, мы об одном и том же говорим.
Пункт №1. Создать АДЕКВАТНЫЙ СКРИПТ. Мы выставляем ссылки на сайты, значит site.ru - необходимо преобразовать в адекватный вид: http://site.ru.
Пункт №2. Говорим о безопасности, обработка Кавычек и знаков больше/меньше - тут просто htmlspecialchars.