Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: В чем сущность htmlspecialchars?
 
 автор: Владимир55   (17.12.2007 в 10:44)   письмо автору
 
 

Никак не пойму, в чем сущность htmlspecialchars.

В Самоучителе приводится пример, когда оператором print выводится JS код, который на самом деле при этом исполняется, а не выводится И случай, когда этот код обработан

$text = htmlspecialchars($text);

После такой обработки код не исполнятся, а именно выводится броузером.

Но что же конкретно делает функция htmlspecialchars? Она изменяет код? Что-то убирает из него? Или что-то в него добавляет, какой-нибудь признак?

Что будет, если код, обработанный htmlspecialchars, выводить не сразу, а прежде сохранить в текстовом файле, потом извлечь из него запустить через echo?

А если будет два кода $text_1 и $text_2, каждый из которых неисполняем, но вместе образующие осмысленную программу? Допустим, ввели сначала $text_1 и обработали ее htmlspecialchars, а потом ввели $text_2 и тоже обработали htmlspecialchars, затем просуммировали и запустили - код исполнится?


$text_1 = '<sctipt languare="jsvsscript">';
$text_1 = htmlspecialchars ($text_1);
$text_2 = 'alert ("Privet"; </scripr>';
$text_2 = htmlspecialchars ($text_2);
$text = $text_1 . $text_2 ;
print $text ;

   
 
 автор: Shaden   (17.12.2007 в 11:48)   письмо автору
 
   для: Владимир55   (17.12.2007 в 10:44)
 

>Никак не пойму, в чем сущность htmlspecialchars.
http://ru2.php.net/manual/ru/function.htmlspecialchars.php

>Что будет, если код, обработанный htmlspecialchars, выводить не сразу, а прежде сохранить в текстовом файле, потом извлечь из него запустить через echo?

Сохранит кто?

>А если будет два кода $text_1 и $text_2, каждый из которых неисполняем, но вместе образующие осмысленную программу? Допустим, ввели сначала $text_1 и обработали ее htmlspecialchars, а потом ввели $text_2 и тоже обработали htmlspecialchars, затем просуммировали и запустили - код исполнится?

Нет, не исполнится, поскольку эти две переменные будут содержать уже обработанный код

   
 
 автор: Киналь   (17.12.2007 в 11:49)   письмо автору
 
   для: Владимир55   (17.12.2007 в 10:44)
 

А вы посмотрите HTML-код после работы htmlspecialchars и все поймете) Она, в частности, заменяет угловые скобки <> на их escape-последовательности, если не ошибаюсь, &lt; и &gt; Браузе их показывает как угловые скобки, но считает заключенное между ними не тегами, а текстом. И соответситвенно не исполняет.

   
 
 автор: Владимир55   (17.12.2007 в 11:56)   письмо автору
 
   для: Киналь   (17.12.2007 в 11:49)
 

Если так, то htmlentities() более надежно защищает от проникновения нежелательных кодов?

   
 
 автор: Trianon   (17.12.2007 в 12:03)   письмо автору
 
   для: Владимир55   (17.12.2007 в 11:56)
 

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

А чтобы определить сущность этой функции - нужно страницы в браузере смотреть не только в прямом окне, но и через "гл.меню/вид/в виде HTML" (если применяете IE)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования