PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (4): [1] 2 3 4 »   

> Описание: Использование htmlspecialchars
sadex
Отправлено: 12 Июля, 2013 - 19:00:38
Post Id


Новичок


Покинул форум
Сообщений всего: 48
Дата рег-ции: Июнь 2013  


Помог: 1 раз(а)




Пока не понимаю такой вещи. Если текст сообщения от юзера создается не в bb-разметке, а в html-разметке, надо ли для фильтрации от XSS и прочих атак прогонять этот текст через htmlspecialchars, если в тексте нет кода, предназначенного для отображения (вывода, показа) ?

Совсем у меня что-то мозги не просекают этого вопроса. Иногда просто кажется, что htmlspecialchars нужен только для вывода (отображения) кода. А если кода в сообщении нет - то и не нужен.
 
 Top
AlexAnder
Отправлено: 12 Июля, 2013 - 19:12:31
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 915
Дата рег-ции: Авг. 2012  
Откуда: Россия


Помог: 34 раз(а)




http://forum.php.su/topic.php?forum=4&topic=2412

(Отредактировано автором: 12 Июля, 2013 - 20:12:10)



-----
Оказывается, недостаточно читать справочники, чтобы правильно писать коды. sadex ©

Форумы стали местом обучения программированию, а не решения трудных вопросов. KingStar ©
 
 Top
sadex
Отправлено: 12 Июля, 2013 - 19:44:32
Post Id


Новичок


Покинул форум
Сообщений всего: 48
Дата рег-ции: Июнь 2013  


Помог: 1 раз(а)




AlexAnder пишет:
вася-хакер пишет:
привет всем <script>location.href='http://gogle.com';</script>
Вот не врубаюсь, как в этом случае помогает htmlspecialchars.

Имхо, полный провал в моих мозгах. Ну, преобразовал этот контейнер <script> htmlspecialchars в сущности, но не только этот контейнер, но и весь текст сообщения. А при выводе сообщения в браузер надо же все это обратно в нормальный html преобразовывать, и опять всплывет этот контейнер <script>... Чую, что туплю, может, по черному, но что-то в мозге у меня не укладывается.
 
 Top
DelphinPRO
Отправлено: 12 Июля, 2013 - 20:20:04
Post Id



Активный участник


Покинул форум
Сообщений всего: 7191
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




sadex, если вы разрешаете в полях ввода писать html разметку, то стоит фильтровать по-другому. Тут отталкиваемся от того, что вы всё-таки не весь набор html-тегов разрешаете, а только оформительские для текста (чаще всего). Таким образом следует удалить все неразрешенные теги

PHP:
скопировать код в буфер обмена
  1. $text = strip_tags($text, '<a><b><i>'); // перечисляются разрешенные теги


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
sadex
Отправлено: 13 Июля, 2013 - 00:39:33
Post Id


Новичок


Покинул форум
Сообщений всего: 48
Дата рег-ции: Июнь 2013  


Помог: 1 раз(а)




DelphinPRO пишет:
sadex, если вы разрешаете в полях ввода писать html разметку, то стоит фильтровать по-другому.
Вот спасибо, мил человек, за здравую мысль... А то ведь везде эту htmlspecialchars не глядя рекомендуют... По другому - много всяких вариантов, и Ваш - один из вполне рабочих, при данных исходных условиях.

(Отредактировано автором: 13 Июля, 2013 - 00:40:22)

 
 Top
sadex
Отправлено: 13 Июля, 2013 - 05:53:34
Post Id


Новичок


Покинул форум
Сообщений всего: 48
Дата рег-ции: Июнь 2013  


Помог: 1 раз(а)




DelphinPRO пишет:
sadex, если вы разрешаете в полях ввода писать html разметку,
Хорошо. Не разрешаем в полях ввода писать html-разметку текста, разрешаем писать bb-разметку. Кода (js, php и т.д.) в сообщениях юзеров нет. Чем и как в этом случае помогает htmlspecialchars ?
 
 Top
sadex
Отправлено: 13 Июля, 2013 - 08:53:41
Post Id


Новичок


Покинул форум
Сообщений всего: 48
Дата рег-ции: Июнь 2013  


Помог: 1 раз(а)




Кое что интересное. Имеем в БД текст, сохраненный с простой html-разметкой:
Цитата:
В 2011 году <b><span style=color:purple>государство</span></b> взялось за развитие LTE в России и распределение пригодных частот для этой технологии. <span style=color:blue>Ситуация с частотами оказалась по-настоящему сложной и запутанной</span>, каждый из участников рынка пытался использовать ее в собственных интересах, что привело к возникновению многочисленных конфликтов и <b>противоречий</b>.

Выводим этот текст в браузер:
Цитата:
В 2011 году государство взялось за развитие LTE в России и распределение пригодных частот для этой технологии. Ситуация с частотами оказалась по-настоящему сложной и запутанной, каждый из участников рынка пытался использовать ее в собственных интересах, что привело к возникновению многочисленных конфликтов и противоречий.

Перед выводом в браузер прогоняем текст один раз через htmlspecialchars
$text = htmlspecialchars($text);
Получаем просмотр текста с кодом разметки:
Цитата:
В 2011 году <b><span style=color:purple>государство</span></b> взялось за развитие LTE в России и распределение пригодных частот для этой технологии. <span style=color:blue>Ситуация с частотами оказалась по-настоящему сложной и запутанной</span>, каждый из участников рынка пытался использовать ее в собственных интересах, что привело к возникновению многочисленных конфликтов и <b>противоречий</b>. <br />

Перед выводом в браузер прогоняем текст два раза через htmlspecialchars
$text = htmlspecialchars($text);
$text = htmlspecialchars($text);
Получаем просмотр текста с html-сущностями:
Цитата:
В 2011 году &lt;b&gt;&lt;span style=color:purple&gt;государство&lt;/span&gt;&lt;/b&gt; взялось за развитие LTE в России и распределение пригодных частот для этой технологии. &lt;span style=color:blue&gt;Ситуация с частотами оказалась по-настоящему сложной и запутанной&lt;/span&gt;, каждый из участников рынка пытался использовать ее в собственных интересах, что привело к возникновению многочисленных конфликтов и &lt;b&gt;противоречий&lt;/b&gt;.


Неплохая иллюстрация работы htmlspecialchars.

(Отредактировано автором: 13 Июля, 2013 - 09:10:36)

 
 Top
AlexAnder
Отправлено: 13 Июля, 2013 - 09:23:38
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 915
Дата рег-ции: Авг. 2012  
Откуда: Россия


Помог: 34 раз(а)




Цитата:
Неплохая иллюстрация работы htmlspecialchars

справочники/мануалы наверное уже закрыли (закон о произвольных блокировках интернет-ресурсов)


-----
Оказывается, недостаточно читать справочники, чтобы правильно писать коды. sadex ©

Форумы стали местом обучения программированию, а не решения трудных вопросов. KingStar ©
 
 Top
sadex
Отправлено: 13 Июля, 2013 - 09:27:32
Post Id


Новичок


Покинул форум
Сообщений всего: 48
Дата рег-ции: Июнь 2013  


Помог: 1 раз(а)




Практика - критерий истины и лучший справочник. И потом, где в справочнике сказано, что чтобы в браузере увидеть html-сущности надо прогнать текст через htmlspecialchars два раза?
AlexAnder пишет:
справочники/мануалы наверное уже закрыли (закон о произвольных блокировках интернет-ресурсов)
Зачем народ пугать... кто-то прочитает и поверит.

(Отредактировано автором: 13 Июля, 2013 - 09:30:45)

 
 Top
AlexAnder
Отправлено: 13 Июля, 2013 - 09:33:10
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 915
Дата рег-ции: Авг. 2012  
Откуда: Россия


Помог: 34 раз(а)




может мне тоже стоит выложить подробнейшее описание рандомной функции?

мануал пишет:
Производятся следующие преобразования:

'&' (амперсанд) преобразуется в '&amp;'
'"' (двойная кавычка) преобразуется в '&quot;' в режиме ENT_NOQUOTES is not set.
"'" (одиночная кавычка) преобразуется в ''' только в режиме ENT_QUOTES.
'<' (знак "меньше чем") преобразуется в '&lt;'
'>' (знак "больше чем") преобразуется в '&gt;'

думаю этого достаточно, чтобы понять смысл функции:
первый раз > преобразуется в &gt; (на выходе >)
потом &gt; преобразуется в &amp;gt; (преобразование &amp; в & и на выходе будет &gt;)
(Добавление)
PHP:
скопировать код в буфер обмена
  1. echo htmlspecialchars('>'); // & g t ;
  2. echo htmlspecialchars('& g t ;'); // & a m p ; g t ;

(Отредактировано автором: 13 Июля, 2013 - 10:19:51)



-----
Оказывается, недостаточно читать справочники, чтобы правильно писать коды. sadex ©

Форумы стали местом обучения программированию, а не решения трудных вопросов. KingStar ©
 
 Top
sadex
Отправлено: 13 Июля, 2013 - 10:00:18
Post Id


Новичок


Покинул форум
Сообщений всего: 48
Дата рег-ции: Июнь 2013  


Помог: 1 раз(а)




Неверно.
PHP:
скопировать код в буфер обмена
  1. echo htmlspecialchars('>'); // выводит >
  2. // второе
  3. echo htmlspecialchars('>'); // тоже выводит >
Оказывается, недостаточно читать справочники, чтобы правильно писать коды.
AlexAnder пишет:
Отредактировано автором: 13 Июля, 2013 - 10:19:51
Отредактированное - верно.

(Отредактировано автором: 13 Июля, 2013 - 15:10:10)

 
 Top
AlexAnder
Отправлено: 13 Июля, 2013 - 10:20:48
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 915
Дата рег-ции: Авг. 2012  
Откуда: Россия


Помог: 34 раз(а)




ёмаё как всё запущено у тебя, ты не подумал почему в коментарии у меня пробелы?
p.s. я не заметил что параметр функции преобразовался
(Добавление)
надеюсь смысл пробелов то знаешь ...
(Добавление)
Цитата:
Оказывается, недостаточно читать справочники, чтобы правильно писать коды.

действительно, го смотреть попова, я создал!
(Добавление)
Цитата:
echo htmlspecialchars('>'); // выводит >
// второе
echo htmlspecialchars('>'); // тоже выводит >

ну это вообще глупо, интересно а на стопервый раз тоже '>' будет?


-----
Оказывается, недостаточно читать справочники, чтобы правильно писать коды. sadex ©

Форумы стали местом обучения программированию, а не решения трудных вопросов. KingStar ©
 
 Top
DelphinPRO
Отправлено: 13 Июля, 2013 - 10:27:07
Post Id



Активный участник


Покинул форум
Сообщений всего: 7191
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




sadex пишет:
Хорошо. Не разрешаем в полях ввода писать html-разметку текста, разрешаем писать bb-разметку.

почитайте эту темку там как раз сейчас спорят по этому поводу.

UPD
ох ты ж ё-моё, темка-то ваша Улыбка
(Добавление)
Ладно, отвечая на ваш вопрос
sadex пишет:
Чем и как в этом случае помогает htmlspecialchars ?
скажу: htmlspecialchars используют как раз для того, чтобы предотвратить выполнение нежелательного кода в браузере. И тут уже программист должен думать, где использовать преобразования в сущности, а где нет.

(Отредактировано автором: 13 Июля, 2013 - 10:27:46)



-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
LIME
Отправлено: 13 Июля, 2013 - 10:33:50
Post Id



Активный участник


Покинул форум
Сообщений всего: 10736
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




DelphinPRO пишет:
чтобы предотвратить выполнение нежелательного кода в браузере.
точнее отобразить html код а не интерпретировать его в верстку


-----
: DDD
 
 Top
sadex
Отправлено: 13 Июля, 2013 - 11:02:39
Post Id


Новичок


Покинул форум
Сообщений всего: 48
Дата рег-ции: Июнь 2013  


Помог: 1 раз(а)




LIME пишет:
точнее отобразить html код а не интерпретировать его в верстку
Ну наконец-то, подходим к чему-то вразумительному. У меня есть такое описание (не из справочнка):
Цитата:
Эта функция полезна для отображения введенных пользователем данных, которые могут содержать нежелательные HTML тэги, например для отображения сообщения, введенного в форуме или гостевой книге. Также эта функция полезна для отображения кодов (html, js, php и т.д.) при запрете на исполнение этих кодов.
Сам откуда-то брал и уточнял это описание, не помню по какому поводу.

Цель темы я изложил довольно точно, в первом посте темы:
Цитата:
Если текст сообщения от юзера создается не в bb-разметке, а в html-разметке, надо ли для фильтрации от XSS и прочих атак прогонять этот текст через htmlspecialchars, если в тексте нет кода, предназначенного для отображения (вывода, показа) ?
Пока пришел к выводу, что htmlspecialchars есть смысл применять только для фильтрации текста из полей формы, в которой всякая разметка через html-теги запрещена (случай 1). Либо для отображения, но не исполнения html, js, php и прочего кода (случай 2). Случай 2 имеет место только на сайтах программистов, для новостных и прочих сайтов непрограммистов его нет смысла применять.

При этом, в случае 1, если это сайт непрограммистов, имхо, проще пропустить текст из формы ввода через strip_tags, чем всякий мусор преобразовывать в tmlspecialchars и хранить и отображать его потом. Могу быть неправ. Но возражения должны быть доказательными.

(Отредактировано автором: 13 Июля, 2013 - 11:13:48)

 
 Top
Страниц (4): [1] 2 3 4 »
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Хранение данных, их вывод и обработка »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB