Подробнее об экранировании HTML и URL

podrobnee ob ekranirovanii html i url Сценарии на стороне сервера

Возможно, самое тонкое изменение в версии из предыдущего раздела состоит в том, что для надежности в этой редакции сценария ответа (пример 15.23) функция cgi.escape вызывается также для обработки на- зва ний языков, а не только для фрагмента программного кода на этих языках. Этого не требовалось в сценарии languages2.py (пример 15.20), потому что названия языков в таблице выбора были нам известны. Хоть и маловероятно, но все же возможно, что некто передаст сценарию название языка, содержащее символ HTML. Например, следующий URL:

http://localhost/cgibin/languages2reply.py?language=a<b

вставляет символ < в параметр с названием языка (названием является a<b). При передаче такого параметра эта версия с помощью функции cgi.escape правильно преобразует < для использования в HTML-разметке ответа согласно обсуждавшимся выше стандартным соглашениям HTML. Ниже приводится текст сгенерированного ответа:

<TITLE>Languages</TITLE>

<H1>Syntax</H1><HR>

<H3>a&lt;b</H3><P><PRE>

SorryI don’t know that language

</PRE></P><BR>

<HR>

В исходной версии, в примере 15.18, название языка не экранируется, поэтому последовательность символов <b будет интерпретироваться как тег HTML (в результате чего оставшаяся часть страницы может быть выведена полужирным шрифтом!). Как вы уже можете теперь судить, экранирование текста повсеместно используется в сценариях CGI — даже текст, который кажется вам безопасным, обычно должен преобразовываться в экранированные последовательности перед вставкой в разметку HTML ответа.

Фактически, так как Веб является преимущественно текстовой средой, объединяющей множество языков программирования, к текстам могут применяться множество различных правил форматирования: одни для адресов URL и другие для разметки HTML. Выше в этой главе мы уже сталкивались с экранированием разметки HTML, теперь необходимо сказать несколько дополнительных слов об экранировании адресов URL и комбинации HTML и URL.

Использованная литература:

Марк Лутц — Программирование на Python, 4-е издание, II том, 2011

Каталог сайтов Всего.ру
Оцените статью
Секреты программирования
Добавить комментарий