[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Использование htmlspecialchars
matroskin
Добрый день.
Сори, если подобный вопрос уже возникал на форуме. Никогда особо не задавался этим вопросом, но случайно он встал передо мною dry.gif
Вопрос в следующем: имеем форму для отправления сообщений на почту. Если пользователь не заполнил обязательное поле, то мы заносим данные других заполненных полей в сессионные переменные, возвращаем пользователя на страницу с формой и предлагаем дозаполнить ее. При этом заполненные данные выводим в соответствующих полях формы (сессионные переменные). Всегда вывод пользовательских данных обрабатывал ф-цией htmlspecialchars();, но вот недавно обнаружил, что если не обрабатывать данные (которые выводим именно как значения полей формы) этой функцией, то вроде ничего страшного и не происходит - код не выполняется, а выводится в том же виде, как его ввел пользователь. При этом не только в текстовых полях код не выполняется, но и в текстовой области.
В сети ответа на вопрос выполняется ли код в полях формы не нашел. У кого-какие соображения на этот счет?



Спустя 3 минуты, 30 секунд (16.02.2011 - 14:53) DmitryOpalev написал(а):
Нет.
Так то проверить не сложно smile.gif

Спустя 30 минут, 12 секунд (16.02.2011 - 15:23) matroskin написал(а):
Проверить-то не сложно. Всегда и проверял biggrin.gif
Просто вот не проверил и сделал для себя открытие такое )) Т.е., получается, что те данные, которые мы не собираемся выводить вне полей, можно и не обрабатывать...

Спустя 12 минут, 28 секунд (16.02.2011 - 15:35) DmitryOpalev написал(а):
Стоп... я похоже не понял...
Вообщем, так:
Любый данные, принимаемы от пользователя надо выводить htmlspecialchars(), даже в поле, textarea или просто так...

Спустя 7 минут, 12 секунд (16.02.2011 - 15:43) matroskin написал(а):
Так вопрос и состоит в том что те данные, полученные методом post и вставляемые как значения полей формы не выполняются браузером как код именно в форме. Самый простой пример:
<form method="post">
<
input type="text" name="test" value="<?php echo $_POST['test']; ?>" />
<
input type="submit" name="submit" />
</
form>
<?php
echo $_POST['test'];
?>

Когда мы выводим необработанные данные под формой, то код, конечно же, выполняется. Эти же данные выведенные в качестве значения поля - не выполняются... пробовал на примерах:
<h1>test</h1>

и
<script>alert(1)</script>

Собственно, продублирую вопрос, код в полях формы не выполняется или я чего-то упускаю?

Спустя 10 минут, 42 секунды (16.02.2011 - 15:53) Zerstoren написал(а):
А прием почты у вас идет как
text/plain
или
text/html
?

если как text/html
То используйте htmlspecialchars() иначе толку нету.

Спустя 2 минуты, 7 секунд (16.02.2011 - 15:55) matroskin написал(а):
Прием почты - обычный текст (text/plain), т.е., теги не страшны... но суть, в общем-то, не в этом - сейчас интересует вывод именно в качестве значений полей.

Спустя 7 минут, 11 секунд (16.02.2011 - 16:03) twin написал(а):
Цитата
сейчас интересует вывод именно в качестве значений полей.

Вот это введи:
"><iframe src="http://sex.com" >

Спустя 4 минуты, 43 секунды (16.02.2011 - 16:07) matroskin написал(а):
twin, осознал, спс biggrin.gif
Быстрый ответ:

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