Вот есть форма ввода текста, человек вводит туда текст, этот текст обрабатывается и выдается ему на следующей странице. Если человек введет код вызова вредоносного кода, то что-нибудь случится? Все происходит по такой технологии: Человек заходит на страницу A, вводит текст, нажимает "Отправить", редирект на страницу B, страница B выдает пользователю обработанный текст. Никаких записей в БД не производится.
ну введеные форму данные должны проходить проверку, можно так обрабатывать данные из формы что не получится ввести ни какой вредоносный код к примеру... запретив вводить символы и т.д..
Заменять символы <, >, &, " на их соответствующие html-эквиваленты: < > & ". В php это делает функция htmlspecialchars.
Обходится, братюнь. Например: PHP: $a = "<input type='text' value='".$_GET['q']."'>"; echo(strtr($a, array('<' => '<', '>' => '>', '&' => '&', '"' => '"'))); Обходик:
А добавление пробелов не спасет? Т.е. < script type= " text/ javascript " src= "/ fpt/ _js/ worker. Js? Id=7/ 19/ 2010 6: 13: 17 pm "> Или спасет?
Я общий случай привел. Если ты одинарные кавычки используешь в поле, то тогда и их заменять надо, естественно (на '). Можно еще менять обратные слешы, и тогда вообще все хорошо будет. Плохой вариант. Лучше все сомнительные символы менять на их html-эквивалентные коды.
ну вот там в тексте просто не нужно обычному пользователю использовать < или >, значит их будет использовать только взломщик, поэтому почему это плохой вариант?
Не, ну я то тебя понял, можно расценивать как придирку, просто не факт, что остальные будут фильтровать именно то, что надо, а не то, что ты скинул как пример. Стрип_тегс вообще можно забыть.
Если действительно не нужны какие-то символы, то можно их удалять. Либо прикрутить проверку введенного текста регулярным выражением, чтобы оно просто не пропускало невалидные символы.
Господи, развели тут демагогию. Обрабатывать данные надо там где надо и так как надо. В общем случае, необходимо и достаточно использовать htmlspecialchars, если предполагается вывод данных между тегами. Если выводимые данные используются внутри тега - обрамлять все это дело в кавычки, применить htmlspecialchars заменяя эквивалентами все кавычки плюс заменить прямой и обратный слеши. Вроде бы так? А вот удалять или запрещать - лучше не надо. Удаление может привести наооборот к увеличению числа уязвимостей и ложной уверенности, а запрещение - к неудовольствию пользователя, может он хотел поделиться какой нить формулой с неравенствами, а вы так нагло удалили некоторые символы
В общем случае я применял такую последовательность: htmlspecialchars + замена одинарной кавычки и обратного слеша. После этого данные безопасны в плане XSS и SQL инъекций. Пожалуй, стоит еще нулевые байты убирать...
GRRRL Power урл вида javascript://xss еще ж. Если мы ничего не забыли. htmlspecialchars нулл байт тоже заменяет